Fix su checkbox selection in Vendita

This commit is contained in:
Giuseppe Scorrano 2019-01-11 12:10:10 +01:00
parent b9c513c160
commit ceca225b23
3 changed files with 58 additions and 16 deletions

View File

@ -210,6 +210,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
.setData(ord.getDataOrdS())
.setNumero(ord.getNumOrd())
.setCodAnagOrd(ord.getCodAnagOrd())
.setCodAnagClie(groupedOrdine.codAnagClie)
.setRagSocOrd(ord.getRagSocOrd())
.setPesoTotale(ord.getPesoTotale() != null ? ord.getPesoTotale().floatValue() : null)
.setBarcode(ord.getBarcode())
@ -256,7 +257,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
}
private void initRecyclerView() {
mAdapter = new MainListVenditaAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged);
mAdapter = new MainListVenditaAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged, onSingleSelectionChanged);
mBinding.venditaMainList.setAdapter(mAdapter);
}
@ -264,6 +265,28 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IR
mAdapter.updateItems(groupedOrdiniInevasi);
}
RunnableArgs<OrdineVenditaGroupedInevasoDTO.Ordine> onSingleSelectionChanged = dto -> {
List<OrdineVenditaGroupedInevasoDTO> selectedOrders = mHelper.getSelectedOrders(groupedOrdiniInevasi);
if(!SettingsManager.iDB().isFlagMultiClienteOrdV()){
if(selectedOrders != null && selectedOrders.size() > 1){
for (OrdineVenditaGroupedInevasoDTO selectedOrder : selectedOrders) {
if(!dto.getCodAnagClie().equalsIgnoreCase(selectedOrder.codAnagClie)) {
Stream.of(selectedOrder.ordini).forEach(x -> x.setCheckbox(false));
}
}
}
}
if(selectedOrders != null && selectedOrders.size() > 0) {
mBinding.venditaMainFab.show();
}
else {
mBinding.venditaMainFab.hide();
}
};
RunnableArgs<OrdineVenditaGroupedInevasoDTO> onGroupSelectionChanged = dto -> {
List<OrdineVenditaGroupedInevasoDTO> selectedOrders = mHelper.getSelectedOrders(groupedOrdiniInevasi);

View File

@ -8,6 +8,7 @@ import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.TextView;
@ -24,6 +25,7 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
private Context mContext;
private List<OrdineVenditaGroupedInevasoDTO> mDataset;
private RunnableArgs<OrdineVenditaGroupedInevasoDTO> mOnGroupSelected;
private RunnableArgs<OrdineVenditaGroupedInevasoDTO.Ordine> mOnSingleSelectionChanged;
private Pools.SynchronizedPool sPool = new Pools.SynchronizedPool(2000);
private Pools.SynchronizedPool sPoolClienti = new Pools.SynchronizedPool(3000);
@ -41,10 +43,11 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
}
// Provide a suitable constructor (depends on the kind of dataset)
public MainListVenditaAdapter(Context context, List<OrdineVenditaGroupedInevasoDTO> myDataset, RunnableArgs<OrdineVenditaGroupedInevasoDTO> onGroupSelected) {
public MainListVenditaAdapter(Context context, List<OrdineVenditaGroupedInevasoDTO> myDataset, RunnableArgs<OrdineVenditaGroupedInevasoDTO> onGroupSelected, RunnableArgs<OrdineVenditaGroupedInevasoDTO.Ordine> onSingleSelectionChanged) {
mContext = context;
mDataset = myDataset;
mOnGroupSelected = onGroupSelected;
mOnSingleSelectionChanged = onSingleSelectionChanged;
}
public void updateItems(List<OrdineVenditaGroupedInevasoDTO> updatedDataset) {
@ -108,39 +111,44 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
.inflate(R.layout.vendita_main_list_group_model, holder.mLinearLayoutGroupItemContainer, false);
}
View groupModelView = groupModelViewPool;
holder.views.add(groupModelView);
View ordineView = groupModelViewPool;
holder.views.add(ordineView);
groupModelView.setVisibility(View.VISIBLE);
ordineView.setVisibility(View.VISIBLE);
if (i % 2 == 1) {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
ordineView.setBackgroundColor(mContext.getResources().getColor(R.color.letturaFacilitataBG));
} else {
groupModelView.setBackgroundColor(mContext.getResources().getColor(R.color.white));
ordineView.setBackgroundColor(mContext.getResources().getColor(R.color.white));
}
final CheckBox checkBox = groupModelView.findViewById(R.id.vendita_main_list_group_item_container_checkBox);
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);
groupModelView.setOnClickListener(view -> {
ordineView.setOnClickListener(view -> {
checkBox.toggle();
ordine.checkBox = checkBox.isChecked();
mOnGroupSelected.run(mDataset.get(finalPosition));
// mCheckBoxCallback.onToggle(checkBox.isChecked());
//ordine.checkBox = checkBox.isChecked();
//mOnGroupSelected.run(mDataset.get(finalPosition));
});
TextView testataOrdTextView = groupModelView.findViewById(R.id.vendita_main_list_group_item_container_testata_ord);
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 = groupModelView.findViewById(R.id.vendita_main_list_group_item_container_testata_data_cons);
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 = groupModelView.findViewById(R.id.vendita_main_list_group_item_container_clienti_ord);
LinearLayout clientLinearLayout = ordineView.findViewById(R.id.vendita_main_list_group_item_container_clienti_ord);
List<OrdineVenditaGroupedInevasoDTO.Cliente> subGroupClienti = ordine.clienti;
clientLinearLayout.removeAllViews();
@ -172,7 +180,7 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
clientLinearLayout.addView(groupClienteModelView);
}
holder.mLinearLayoutGroupItemContainer.addView(groupModelView);
holder.mLinearLayoutGroupItemContainer.addView(ordineView);
}

View File

@ -35,6 +35,8 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable,
private String rifOrd;
private String gestione;
private String codAnagClie;
public List<Cliente> clienti;
public boolean checkBox;
@ -158,6 +160,15 @@ public class OrdineVenditaGroupedInevasoDTO implements Cloneable, Serializable,
return this;
}
public String getCodAnagClie() {
return codAnagClie;
}
public Ordine setCodAnagClie(String codAnagClie) {
this.codAnagClie = codAnagClie;
return this;
}
public List<Cliente> getClienti() {
return clienti;
}