From 2f8d54930367df284e1018860ca5788ce6f43368 Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Mon, 28 Sep 2020 11:44:23 +0200 Subject: [PATCH] #A0000207564.60 Implementato nuovo adapter per Dropdown --- .../DialogUltimeConsegneFiltroAvanzato.java | 12 +- .../SimpleAutoCompleteDropdownAdapter.java | 106 ++++++++++++++++++ 2 files changed, 112 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java index 177f2a2d..21907134 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/ultime_consegne_cliente/dialog/DialogUltimeConsegneFiltroAvanzato.java @@ -1,6 +1,5 @@ package it.integry.integrywmsnative.gest.ultime_consegne_cliente.dialog; -import androidx.appcompat.app.AlertDialog; import android.app.DatePickerDialog; import android.content.Context; import android.graphics.Color; @@ -9,6 +8,7 @@ import android.view.LayoutInflater; import android.view.WindowManager; import android.widget.ArrayAdapter; +import androidx.appcompat.app.AlertDialog; import androidx.databinding.DataBindingUtil; import com.annimon.stream.Stream; @@ -22,12 +22,11 @@ import java.util.List; import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.core.di.BindableString; import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.expansion.RunnableArgss; import it.integry.integrywmsnative.core.model.GtbAnag; -import it.integry.integrywmsnative.core.rest.model.DocumentoResoDTO; import it.integry.integrywmsnative.core.utility.UtilityDate; import it.integry.integrywmsnative.core.utility.UtilityString; import it.integry.integrywmsnative.databinding.DialogUltimeConsegneFiltroAvanzatoBinding; +import it.integry.integrywmsnative.ui.adapter.SimpleAutoCompleteDropdownAdapter; public class DialogUltimeConsegneFiltroAvanzato { @@ -105,8 +104,7 @@ public class DialogUltimeConsegneFiltroAvanzato { private void initView(DialogUltimeConsegneFiltroAvanzatoBinding bindings, DialogUltimeConsegneFiltroAvanzatoViewModel viewModel) { - arrayAdapterRagSoc = new ArrayAdapter(mContext, R.layout.dialog_vendita_filtro_avanzato__single_item); - arrayAdapterRagSoc.addAll(getAvailableRagSocs(false)); + arrayAdapterRagSoc = new SimpleAutoCompleteDropdownAdapter(mContext, R.layout.dialog_vendita_filtro_avanzato__single_item, getAvailableRagSocs(false)); bindings.filledExposedDropdownRagSoc.setAdapter(arrayAdapterRagSoc); bindings.filledExposedDropdownDataDoc.setOnClickListener(view -> { @@ -141,7 +139,9 @@ public class DialogUltimeConsegneFiltroAvanzato { BindableString.registerListener(viewModel.ragSoc, value -> { if (UtilityString.isNullOrEmpty(value)) currentRagSocPredicate = null; else { - currentRagSocPredicate = o -> o.getRagSoc().equalsIgnoreCase(viewModel.ragSoc.get()); + currentRagSocPredicate = o -> { + return o.getRagSoc().equalsIgnoreCase(viewModel.ragSoc.get()); + }; } refreshList(); diff --git a/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java new file mode 100644 index 00000000..14a5d571 --- /dev/null +++ b/app/src/main/java/it/integry/integrywmsnative/ui/adapter/SimpleAutoCompleteDropdownAdapter.java @@ -0,0 +1,106 @@ +package it.integry.integrywmsnative.ui.adapter; + +import android.content.Context; +import android.widget.ArrayAdapter; +import android.widget.Filter; + +import androidx.annotation.NonNull; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class SimpleAutoCompleteDropdownAdapter extends ArrayAdapter { + + private List mObjects; + + public SimpleAutoCompleteDropdownAdapter(@NonNull Context context, int resource) { + super(context, resource); + } + + public SimpleAutoCompleteDropdownAdapter(@NonNull Context context, int resource, int textViewResourceId) { + super(context, resource, textViewResourceId); + } + + public SimpleAutoCompleteDropdownAdapter(@NonNull Context context, int resource, @NonNull Object[] objects) { + super(context, resource, objects); + mObjects = Arrays.asList(objects); + } + + public SimpleAutoCompleteDropdownAdapter(@NonNull Context context, int resource, int textViewResourceId, @NonNull Object[] objects) { + super(context, resource, textViewResourceId, objects); + mObjects = Arrays.asList(objects); + } + + public SimpleAutoCompleteDropdownAdapter(@NonNull Context context, int resource, @NonNull List objects) { + super(context, resource, objects); + mObjects = objects; + } + + public SimpleAutoCompleteDropdownAdapter(@NonNull Context context, int resource, int textViewResourceId, @NonNull List objects) { + super(context, resource, textViewResourceId, objects); + mObjects = objects; + } + + + @NonNull + @Override + public Filter getFilter() { + return new StringFilter(mObjects); + } + + + + + private class StringFilter extends Filter { + + private ArrayList sourceObjects; + + public StringFilter(List objects) { + if(objects == null) return; + sourceObjects = new ArrayList(); + synchronized (this) { + sourceObjects.addAll(objects); + } + } + + @Override + protected FilterResults performFiltering(CharSequence chars) { + String filterSeq = chars.toString().toLowerCase(); + FilterResults result = new FilterResults(); + if (filterSeq != null && filterSeq.length() > 0) { + ArrayList filter = new ArrayList(); + + for (T object : sourceObjects) { + // the filtering itself: + if (object.toString().toLowerCase().contains(filterSeq)) + filter.add(object); + } + result.count = filter.size(); + result.values = filter; + } else { + // add all objects + synchronized (this) { + result.values = sourceObjects; + result.count = sourceObjects.size(); + } + } + return result; + } + + @SuppressWarnings("unchecked") + @Override + protected void publishResults(CharSequence constraint, + FilterResults results) { + // NOTE: this function is *always* called from the UI thread. + ArrayList filtered = (ArrayList) results.values; + notifyDataSetChanged(); + clear(); + for (int i = 0, l = filtered.size(); i < l; i++) + add(filtered.get(i)); + notifyDataSetInvalidated(); + } + } + + +}