From 637cd659ecca018a7ffac330926e25e7c7e9938e Mon Sep 17 00:00:00 2001 From: GiuseppeS Date: Tue, 2 Jul 2019 12:30:06 +0200 Subject: [PATCH] Rimosso vecchio MainListVenditaAdapter --- .../gest/vendita/MainVenditaFragment.java | 6 +- .../vendita/core/MainListVenditaAdapter.java | 376 +++++++++--------- .../core/MainListVenditaAdapterNew.java | 248 ------------ 3 files changed, 190 insertions(+), 440 deletions(-) delete mode 100644 app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java index 520781e2..f8384c99 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/MainVenditaFragment.java @@ -41,7 +41,7 @@ import it.integry.integrywmsnative.core.utility.UtilityExceptions; import it.integry.integrywmsnative.core.utility.UtilityToast; import it.integry.integrywmsnative.databinding.FragmentMainVenditaBinding; import it.integry.integrywmsnative.core.interfaces.ITitledFragment; -import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapterNew; +import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapter; import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper; import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato; import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzatoViewModel; @@ -61,7 +61,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS private FragmentMainVenditaBinding mBinding = null; private VenditaViewModel mViewModel; - private MainListVenditaAdapterNew mAdapter; + private MainListVenditaAdapter mAdapter; private List mOriginalOrderList; private List mRenderedOrderList = new ArrayList<>(); @@ -273,7 +273,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS private void initRecyclerView() { // mAdapter = new MainListVenditaAdapter(getActivity(), mRenderedOrderList, onGroupSelectionChanged, onSingleSelectionChanged); - mAdapter = new MainListVenditaAdapterNew(getActivity(), mRenderedOrderList, onSingleSelectionChanged); + mAdapter = new MainListVenditaAdapter(getActivity(), mRenderedOrderList, onSingleSelectionChanged); mBinding.venditaMainList.setAdapter(mAdapter); } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java index d3e3f3f6..01e8dcc2 100644 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java +++ b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapter.java @@ -1,250 +1,248 @@ package it.integry.integrywmsnative.gest.vendita.core; import android.content.Context; - -import androidx.core.util.Pools; -import androidx.recyclerview.widget.RecyclerView; - -import android.graphics.Color; import android.text.Html; import android.view.LayoutInflater; -import android.view.View; import android.view.ViewGroup; -import android.widget.LinearLayout; -import android.widget.TextView; -import java.util.ArrayList; +import androidx.core.content.res.ResourcesCompat; +import androidx.databinding.DataBindingUtil; +import androidx.databinding.Observable; +import androidx.recyclerview.widget.RecyclerView; + +import com.annimon.stream.Stream; +import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; + +import java.util.HashMap; import java.util.List; import it.integry.integrywmsnative.R; +import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.expansion.RunnableArgs; import it.integry.integrywmsnative.core.utility.UtilityDate; +import it.integry.integrywmsnative.databinding.VenditaMainListGroupModelBinding; +import it.integry.integrywmsnative.databinding.VenditaMainListModelBinding; +import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; +import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; -public class MainListVenditaAdapter extends RecyclerView.Adapter { +public class MainListVenditaAdapter extends SectionedRecyclerViewAdapter implements SectionTitleProvider { private Context mContext; - private List mDataset; - private RunnableArgs mOnGroupSelected; - private RunnableArgs mOnSingleSelectionChanged; - private Pools.SynchronizedPool sPool = new Pools.SynchronizedPool(2000); - private Pools.SynchronizedPool sPoolClienti = new Pools.SynchronizedPool(3000); + private HashMap mCallbacksDictionary = new HashMap<>(); - public static class ViewHolder extends RecyclerView.ViewHolder { - // each data item is just a string in this case - private TextView mTextViewGroupHeader; - private LinearLayout mLinearLayoutGroupItemContainer; + private List mDataset; + private RunnableArgs mOnSingleSelectionChanged; - private List views = new ArrayList<>(); - public ViewHolder(View v) { - super(v); + static class SubheaderHolder extends RecyclerView.ViewHolder { + + VenditaMainListModelBinding binding; + + SubheaderHolder(VenditaMainListModelBinding binding) { + super(binding.getRoot()); + this.binding = binding; + } + + } + + static class SingleItemViewHolder extends RecyclerView.ViewHolder { + + VenditaMainListGroupModelBinding binding; + + SingleItemViewHolder(VenditaMainListGroupModelBinding binding) { + super(binding.getRoot()); + this.binding = binding; } } - // Provide a suitable constructor (depends on the kind of dataset) - public MainListVenditaAdapter(Context context, List myDataset, RunnableArgs onGroupSelected, RunnableArgs onSingleSelectionChanged) { + + public MainListVenditaAdapter(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) { mContext = context; - mDataset = myDataset; - mOnGroupSelected = onGroupSelected; + mDataset = orderItems(myDataset); mOnSingleSelectionChanged = onSingleSelectionChanged; } - public void updateItems(List updatedDataset) { + public void updateItems(List updatedDataset) { mDataset.clear(); - mDataset.addAll(updatedDataset); + mDataset.addAll(orderItems(updatedDataset)); notifyDataSetChanged(); + notifyDataChanged(); } - // Create new views (invoked by the layout manager) - @Override - public MainListVenditaAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, - int viewType) { - // create a new view - View v = LayoutInflater.from(parent.getContext()) - .inflate(R.layout.vendita_main_list_model, parent, false); + private List orderItems(List dataset) { + return Stream.of(dataset) + .sortBy(OrdineVenditaInevasoDTO::getRagSocOrd) + .toList(); - ViewHolder vh = new ViewHolder(v); - - TextView groupHeader = v.findViewById(R.id.vendita_main_list_group_header); - vh.mTextViewGroupHeader = groupHeader; - - LinearLayout groupItemContainer = v.findViewById(R.id.vendita_main_list_group_item_container); - vh.mLinearLayoutGroupItemContainer = groupItemContainer; - - return vh; } - // Replace the contents of a view (invoked by the layout manager) + + @Override - public void onBindViewHolder(ViewHolder holder, int position) { - // - get element from your dataset at this position - // - replace the contents of the view with that element + public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { + VenditaMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_model, parent, false); + return new SubheaderHolder(binding); + } - final List subGroup = mDataset.get(position).ordini; - final int finalPosition = position; + @Override + public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { + VenditaMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_group_model, parent, false); + return new SingleItemViewHolder(binding); + } - holder.mTextViewGroupHeader.setText(mDataset.get(position).nomeCliente); - holder.itemView.setOnClickListener(view -> { - boolean newValue = true; - for(int i = 0; i < subGroup.size(); i++){ - if(subGroup.get(i).checkBox) newValue = false; - } + @Override + public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) { + subheaderHolder.binding.venditaMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd()); - for(int i = 0; i < subGroup.size(); i++){ - subGroup.get(i).setCheckbox(newValue); - } + subheaderHolder.binding.getRoot().setOnClickListener(v -> { - mOnGroupSelected.run(mDataset.get(finalPosition)); + boolean anySelected = Stream.of(mDataset) + .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) + .anyMatch(OrdineVenditaInevasoDTO::isSelected); + + Stream.of(mDataset) + .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) + .forEach(x -> x.setSelected(!anySelected)); + }); + } + + @Override + public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) { + OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition); + + holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null); + + if (mCallbacksDictionary.containsKey(ordine.selected)) { + ordine.selected.removeOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected)); + } + + + holder.binding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), ordine.flagExistCollo() ? R.color.colorPrimary : android.R.color.transparent, null)); + + String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + holder.binding.venditaMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString)); + + String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); + holder.binding.venditaMainListGroupItemContainerTestataDataCons.setText(Html.fromHtml(testataDataConsString)); + + holder.binding.venditaMainListGroupItemContainerDetailOrd.setText(ordine.getRifOrd()); + + holder.binding.setCheckboxValue(ordine.selected); + + holder.binding.getRoot().setOnClickListener(v -> { + ordine.setSelected(!ordine.isSelected()); }); + holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected()); - // final View existColloView = ordineView.findViewById(R.id.exist_collo); - - // existColloView.setAlpha(ordine.isExistCollo() ? 1 : 0); - - for (int i = 0; i < subGroup.size(); i++) { - final OrdineVenditaGroupedInevasoDTO.Ordine ordine = subGroup.get(i); - - ordine.checkBoxCallback = new ArrayList<>(); - - View groupModelViewPool = (View) sPool.acquire(); - if(groupModelViewPool == null){ - groupModelViewPool = LayoutInflater.from(mContext) - .inflate(R.layout.vendita_main_list_group_model, holder.mLinearLayoutGroupItemContainer, false); + mCallbacksDictionary.put(ordine.selected, new Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(Observable sender, int propertyId) { + holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get()); } + }); - View ordineView = groupModelViewPool; - holder.views.add(ordineView); - - View emptyView = groupModelViewPool.findViewById(R.id.empty_view); - emptyView.setBackgroundColor(Color.GREEN); - - - - - ordineView.setVisibility(View.VISIBLE); - - if (i % 2 == 1) { - ordineView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG)); - } else { - ordineView.setBackgroundColor(mContext.getResources().getColor(R.color.white)); - } - -// final CheckBox checkBox = ordineView.findViewById(R.id.vendita_main_list_group_item_container_checkBox); -// checkBox.setChecked(ordine.checkBox); -// -// checkBox.setOnCheckedChangeListener((buttonView, isChecked) -> { -// ordine.checkBox = checkBox.isChecked(); -// mOnSingleSelectionChanged.run(ordine); -// }); -// -// -// ordine.checkBoxCallback.add(checkBox::setChecked); -// -// ordineView.setOnClickListener(view -> { -// checkBox.toggle(); -// //ordine.checkBox = checkBox.isChecked(); -// //mOnGroupSelected.run(mDataset.get(finalPosition)); -// }); - - - - TextView testataOrdTextView = ordineView.findViewById(R.id.vendita_main_list_group_item_container_testata_ord); - String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumero()), UtilityDate.formatDate(ordine.getData(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - testataOrdTextView.setText(Html.fromHtml(testataOrdString)); - - TextView testataDataConsTextView = ordineView.findViewById(R.id.vendita_main_list_group_item_container_testata_data_cons); - String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - testataDataConsTextView.setText(Html.fromHtml(testataDataConsString)); - - /* - LinearLayout clientLinearLayout = ordineView.findViewById(R.id.vendita_main_list_group_item_container_clienti_ord); - List subGroupClienti = ordine.clienti; - - clientLinearLayout.removeAllViews(); - - for (int k = 0; k < subGroupClienti.size(); k++) { - - - View groupClienteModelViewPool = (View) sPoolClienti.acquire(); - if(groupClienteModelViewPool == null){ - groupClienteModelViewPool = LayoutInflater.from(mContext) - .inflate(R.layout.vendita_main_list_group_clienti, clientLinearLayout, false); - } - - View groupClienteModelView = groupClienteModelViewPool; - - - TextView clienteComm = groupClienteModelView.findViewById(R.id.vendita_main_list_group_clienti_comm); - String clienteText; - clienteText = subGroupClienti.get(k).rifOrd; - clienteComm.setText(clienteText); - -// TextView dataCons = groupClienteModelView.findViewById(R.id.vendita_main_list_group_clienti_datacons); -// if (subGroupClienti.get(k).getDataCons() != null) { -// dataCons.setText(UtilityDate.formatDate(subGroupClienti.get(k).getDataCons(), UtilityDate.COMMONS_DATE_FORMATS.DMY_SLASH)); -// } else { -// dataCons.setText(""); -// } - - clientLinearLayout.addView(groupClienteModelView); - }*/ - - holder.mLinearLayoutGroupItemContainer.addView(ordineView); - - - // Gets the layout params that will allow you to resize the layout - ViewGroup.LayoutParams params = emptyView.getLayoutParams(); - // Changes the height and width to the specified *pixels* - params.height = holder.itemView.getHeight(); - emptyView.setLayoutParams(params); - - - } - + holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { + ordine.setSelected(isChecked); + mOnSingleSelectionChanged.run(ordine); + }); + ordine.selected.addOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected)); } + @Override - public void onViewRecycled(ViewHolder holder){ - if(holder != null){ - for(int i = 0; i < holder.views.size(); i++){ - View groupModelView = holder.views.get(i); -/* - LinearLayout clientLinearLayout = groupModelView.findViewById(R.id.vendita_main_list_group_item_container_clienti_ord); + public boolean onPlaceSubheaderBetweenItems(int position) { + return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd()); - for(int k = 0; k < clientLinearLayout.getChildCount(); k++){ - View cliente = clientLinearLayout.getChildAt(k); - ((ViewGroup) cliente.getParent()).removeView(cliente); - - sPoolClienti.release(cliente); - }*/ - - ((ViewGroup) groupModelView.getParent()).removeView(groupModelView); - sPool.release(groupModelView); - } - - holder.views.clear(); - } - - super.onViewRecycled(holder); } - // Return the size of your dataset (invoked by the layout manager) @Override - public int getItemCount() { + public int getItemSize() { return mDataset.size(); } - public void setFilter(List newDataset) { - mDataset = new ArrayList<>(); - mDataset.addAll(newDataset); - notifyDataSetChanged(); + @Override + public String getSectionTitle(int position) { + return null; } + private static class OrdineListModel { + private String data; + private Integer numero; + private String gestione; + private String dataCons; + + public static OrdineListModel fromOrdine(OrdineVenditaInevasoDTO ordine) { + return new OrdineListModel() + .setData(ordine.getDataOrdS()) + .setDataCons(ordine.getDataConsS()) + .setGestione(ordine.getGestione()) + .setNumero(ordine.getNumOrd()); + } + + public String getData() { + return data; + } + + public OrdineListModel setData(String data) { + this.data = data; + return this; + } + + public Integer getNumero() { + return numero; + } + + public OrdineListModel setNumero(Integer numero) { + this.numero = numero; + return this; + } + + public String getGestione() { + return gestione; + } + + public OrdineListModel setGestione(String gestione) { + this.gestione = gestione; + return this; + } + + public String getDataCons() { + return dataCons; + } + + public OrdineListModel setDataCons(String dataCons) { + this.dataCons = dataCons; + return this; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + OrdineListModel that = (OrdineListModel) o; + + if (!getData().equals(that.getData())) return false; + if (!getNumero().equals(that.getNumero())) return false; + if (!getGestione().equals(that.getGestione())) return false; + return getDataCons() != null ? getDataCons().equals(that.getDataCons()) : that.getDataCons() == null; + } + + @Override + public int hashCode() { + int result = getData().hashCode(); + result = 31 * result + getNumero().hashCode(); + result = 31 * result + getGestione().hashCode(); + result = 31 * result + (getDataCons() != null ? getDataCons().hashCode() : 0); + return result; + } + } + } diff --git a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java b/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java deleted file mode 100644 index 078f78d9..00000000 --- a/app/src/main/java/it/integry/integrywmsnative/gest/vendita/core/MainListVenditaAdapterNew.java +++ /dev/null @@ -1,248 +0,0 @@ -package it.integry.integrywmsnative.gest.vendita.core; - -import android.content.Context; -import android.text.Html; -import android.view.LayoutInflater; -import android.view.ViewGroup; - -import androidx.core.content.res.ResourcesCompat; -import androidx.databinding.DataBindingUtil; -import androidx.databinding.Observable; -import androidx.recyclerview.widget.RecyclerView; - -import com.annimon.stream.Stream; -import com.zhukic.sectionedrecyclerview.SectionedRecyclerViewAdapter; - -import java.util.HashMap; -import java.util.List; - -import it.integry.integrywmsnative.R; -import it.integry.integrywmsnative.core.di.BindableBoolean; -import it.integry.integrywmsnative.core.expansion.RunnableArgs; -import it.integry.integrywmsnative.core.utility.UtilityDate; -import it.integry.integrywmsnative.databinding.VenditaMainListGroupModelBinding; -import it.integry.integrywmsnative.databinding.VenditaMainListModelBinding; -import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO; -import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider; - -public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter implements SectionTitleProvider { - - private Context mContext; - - private HashMap mCallbacksDictionary = new HashMap<>(); - - private List mDataset; - private RunnableArgs mOnSingleSelectionChanged; - - - static class SubheaderHolder extends RecyclerView.ViewHolder { - - VenditaMainListModelBinding binding; - - SubheaderHolder(VenditaMainListModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - - } - - static class SingleItemViewHolder extends RecyclerView.ViewHolder { - - VenditaMainListGroupModelBinding binding; - - SingleItemViewHolder(VenditaMainListGroupModelBinding binding) { - super(binding.getRoot()); - this.binding = binding; - } - } - - - public MainListVenditaAdapterNew(Context context, List myDataset, RunnableArgs onSingleSelectionChanged) { - mContext = context; - mDataset = orderItems(myDataset); - mOnSingleSelectionChanged = onSingleSelectionChanged; - } - - public void updateItems(List updatedDataset) { - mDataset.clear(); - mDataset.addAll(orderItems(updatedDataset)); - notifyDataSetChanged(); - notifyDataChanged(); - } - - - private List orderItems(List dataset) { - return Stream.of(dataset) - .sortBy(OrdineVenditaInevasoDTO::getRagSocOrd) - .toList(); - - } - - - - @Override - public SubheaderHolder onCreateSubheaderViewHolder(ViewGroup parent, int viewType) { - VenditaMainListModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_model, parent, false); - return new SubheaderHolder(binding); - } - - @Override - public SingleItemViewHolder onCreateItemViewHolder(ViewGroup parent, int viewType) { - VenditaMainListGroupModelBinding binding = DataBindingUtil.inflate(LayoutInflater.from(mContext), R.layout.vendita_main_list_group_model, parent, false); - return new SingleItemViewHolder(binding); - } - - - @Override - public void onBindSubheaderViewHolder(SubheaderHolder subheaderHolder, int nextItemPosition) { - subheaderHolder.binding.venditaMainListGroupHeader.setText(mDataset.get(nextItemPosition).getRagSocOrd()); - - subheaderHolder.binding.getRoot().setOnClickListener(v -> { - - boolean anySelected = Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .anyMatch(OrdineVenditaInevasoDTO::isSelected); - - Stream.of(mDataset) - .filter(x -> x.getCodAnagOrd().equals(mDataset.get(nextItemPosition).getCodAnagOrd())) - .forEach(x -> x.setSelected(!anySelected)); - }); - } - - @Override - public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) { - OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition); - - holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null); - - if (mCallbacksDictionary.containsKey(ordine.selected)) { - ordine.selected.removeOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected)); - } - - - holder.binding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), ordine.flagExistCollo() ? R.color.colorPrimary : android.R.color.transparent, null)); - - String testataOrdString = String.format(mContext.getString(R.string.ord_ven_testata), String.valueOf(ordine.getNumOrd()), UtilityDate.formatDate(ordine.getDataOrdD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - holder.binding.venditaMainListGroupItemContainerTestataOrd.setText(Html.fromHtml(testataOrdString)); - - String testataDataConsString = String.format(mContext.getString(R.string.ord_ven_testata_data_cons), UtilityDate.formatDate(ordine.getDataConsD(), UtilityDate.COMMONS_DATE_FORMATS.DMY_HUMAN)); - holder.binding.venditaMainListGroupItemContainerTestataDataCons.setText(Html.fromHtml(testataDataConsString)); - - holder.binding.venditaMainListGroupItemContainerDetailOrd.setText(ordine.getRifOrd()); - - holder.binding.setCheckboxValue(ordine.selected); - - holder.binding.getRoot().setOnClickListener(v -> { - ordine.setSelected(!ordine.isSelected()); - }); - - holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(ordine.isSelected()); - - mCallbacksDictionary.put(ordine.selected, new Observable.OnPropertyChangedCallback() { - @Override - public void onPropertyChanged(Observable sender, int propertyId) { - holder.binding.venditaMainListGroupItemContainerCheckBox.setChecked(((BindableBoolean) sender).get()); - } - }); - - holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> { - ordine.setSelected(isChecked); - mOnSingleSelectionChanged.run(ordine); - }); - - ordine.selected.addOnPropertyChangedCallback(mCallbacksDictionary.get(ordine.selected)); - } - - - - @Override - public boolean onPlaceSubheaderBetweenItems(int position) { - return !this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position + 1).getRagSocOrd()); - - } - - @Override - public int getItemSize() { - return mDataset.size(); - } - - @Override - public String getSectionTitle(int position) { - return null; - } - - - private static class OrdineListModel { - private String data; - private Integer numero; - private String gestione; - private String dataCons; - - public static OrdineListModel fromOrdine(OrdineVenditaInevasoDTO ordine) { - return new OrdineListModel() - .setData(ordine.getDataOrdS()) - .setDataCons(ordine.getDataConsS()) - .setGestione(ordine.getGestione()) - .setNumero(ordine.getNumOrd()); - } - - public String getData() { - return data; - } - - public OrdineListModel setData(String data) { - this.data = data; - return this; - } - - public Integer getNumero() { - return numero; - } - - public OrdineListModel setNumero(Integer numero) { - this.numero = numero; - return this; - } - - public String getGestione() { - return gestione; - } - - public OrdineListModel setGestione(String gestione) { - this.gestione = gestione; - return this; - } - - public String getDataCons() { - return dataCons; - } - - public OrdineListModel setDataCons(String dataCons) { - this.dataCons = dataCons; - return this; - } - - @Override - public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - OrdineListModel that = (OrdineListModel) o; - - if (!getData().equals(that.getData())) return false; - if (!getNumero().equals(that.getNumero())) return false; - if (!getGestione().equals(that.getGestione())) return false; - return getDataCons() != null ? getDataCons().equals(that.getDataCons()) : that.getDataCons() == null; - } - - @Override - public int hashCode() { - int result = getData().hashCode(); - result = 31 * result + getNumero().hashCode(); - result = 31 * result + getGestione().hashCode(); - result = 31 * result + (getDataCons() != null ? getDataCons().hashCode() : 0); - return result; - } - } - -}