Primo refactoring
This commit is contained in:
@@ -157,10 +157,10 @@ public class MainActivity extends AppCompatActivity
|
||||
fragment = PickingLiberoFragment.newInstance();
|
||||
this.adaptViewToFragment(fragment);
|
||||
}
|
||||
// else if (id == R.id.nav_resi_cliente) {
|
||||
// fragment = UltimeConsegneClienteFragment.newInstance();
|
||||
// this.adaptViewToFragment(fragment);
|
||||
// }
|
||||
else if (id == R.id.nav_resi_cliente) {
|
||||
fragment = UltimeConsegneClienteFragment.newInstance();
|
||||
this.adaptViewToFragment(fragment);
|
||||
}
|
||||
else if (id == R.id.nav_prod_versamento_materiale) {
|
||||
fragment = ProdVersamentoMaterialeFragment.newInstance();
|
||||
this.adaptViewToFragment(fragment);
|
||||
|
||||
@@ -217,10 +217,10 @@ public class MainFragment extends Fragment implements ITitledFragment, IScrollab
|
||||
((MainActivity) getActivity()).setItem(R.id.nav_free_picking);
|
||||
}
|
||||
|
||||
// @OnClick(R.id.fast_button_resi_clienti)
|
||||
// public void onClickResiClientio(View view) {
|
||||
// ((MainActivity) getActivity()).setItem(R.id.nav_resi_cliente);
|
||||
// }
|
||||
@OnClick(R.id.fast_button_resi_clienti)
|
||||
public void onClickResiClientio(View view) {
|
||||
((MainActivity) getActivity()).setItem(R.id.nav_resi_cliente);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@ 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.MainListVenditaAdapter;
|
||||
import it.integry.integrywmsnative.gest.vendita.core.MainListVenditaAdapterNew;
|
||||
import it.integry.integrywmsnative.gest.vendita.core.VenditaHelper;
|
||||
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzato;
|
||||
import it.integry.integrywmsnative.gest.vendita.dialogs.DialogVenditaFiltroAvanzatoViewModel;
|
||||
@@ -63,7 +64,7 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
|
||||
private FragmentMainVenditaBinding mBinding = null;
|
||||
private VenditaViewModel mViewModel;
|
||||
|
||||
private MainListVenditaAdapter mAdapter;
|
||||
private MainListVenditaAdapterNew mAdapter;
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> mOriginalOrderList;
|
||||
private List<OrdineVenditaGroupedInevasoDTO> groupedOrdiniInevasi;
|
||||
@@ -272,12 +273,13 @@ public class MainVenditaFragment extends Fragment implements ITitledFragment, IS
|
||||
}
|
||||
|
||||
private void initRecyclerView() {
|
||||
mAdapter = new MainListVenditaAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged, onSingleSelectionChanged);
|
||||
// mAdapter = new MainListVenditaAdapter(getActivity(), groupedOrdiniInevasi, onGroupSelectionChanged, onSingleSelectionChanged);
|
||||
mAdapter = new MainListVenditaAdapterNew(getActivity(), mOriginalOrderList, onGroupSelectionChanged, onSingleSelectionChanged);
|
||||
mBinding.venditaMainList.setAdapter(mAdapter);
|
||||
}
|
||||
|
||||
public void refreshRecyclerView() {
|
||||
mAdapter.updateItems(groupedOrdiniInevasi);
|
||||
mAdapter.updateItems(mOriginalOrderList);
|
||||
}
|
||||
|
||||
private RunnableArgs<OrdineVenditaGroupedInevasoDTO.Ordine> onSingleSelectionChanged = dto -> {
|
||||
|
||||
@@ -105,6 +105,11 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
|
||||
mOnGroupSelected.run(mDataset.get(finalPosition));
|
||||
});
|
||||
|
||||
|
||||
// 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);
|
||||
|
||||
@@ -119,6 +124,11 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
|
||||
View ordineView = groupModelViewPool;
|
||||
holder.views.add(ordineView);
|
||||
|
||||
View emptyView = groupModelViewPool.findViewById(R.id.empty_view);
|
||||
emptyView.setBackgroundColor(Color.GREEN);
|
||||
|
||||
|
||||
|
||||
|
||||
ordineView.setVisibility(View.VISIBLE);
|
||||
|
||||
@@ -145,9 +155,6 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
|
||||
//mOnGroupSelected.run(mDataset.get(finalPosition));
|
||||
});
|
||||
|
||||
final View existColloView = ordineView.findViewById(R.id.exist_collo);
|
||||
|
||||
// existColloView.setAlpha(ordine.isExistCollo() ? 1 : 0);
|
||||
|
||||
|
||||
TextView testataOrdTextView = ordineView.findViewById(R.id.vendita_main_list_group_item_container_testata_ord);
|
||||
@@ -158,6 +165,7 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
|
||||
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<OrdineVenditaGroupedInevasoDTO.Cliente> subGroupClienti = ordine.clienti;
|
||||
|
||||
@@ -188,9 +196,18 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
|
||||
// }
|
||||
|
||||
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);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -202,7 +219,7 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
|
||||
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);
|
||||
|
||||
for(int k = 0; k < clientLinearLayout.getChildCount(); k++){
|
||||
@@ -210,7 +227,7 @@ public class MainListVenditaAdapter extends RecyclerView.Adapter<MainListVendita
|
||||
((ViewGroup) cliente.getParent()).removeView(cliente);
|
||||
|
||||
sPoolClienti.release(cliente);
|
||||
}
|
||||
}*/
|
||||
|
||||
((ViewGroup) groupModelView.getParent()).removeView(groupModelView);
|
||||
sPool.release(groupModelView);
|
||||
|
||||
@@ -0,0 +1,199 @@
|
||||
package it.integry.integrywmsnative.gest.vendita.core;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.os.Parcel;
|
||||
import android.text.Html;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.databinding.DataBindingUtil;
|
||||
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.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.OrdineVenditaGroupedInevasoDTO;
|
||||
import it.integry.integrywmsnative.gest.vendita.dto.OrdineVenditaInevasoDTO;
|
||||
import it.integry.integrywmsnative.ui.fastscroll.SectionTitleProvider;
|
||||
|
||||
public class MainListVenditaAdapterNew extends SectionedRecyclerViewAdapter<MainListVenditaAdapterNew.SubheaderHolder, MainListVenditaAdapterNew.SingleItemViewHolder> implements SectionTitleProvider {
|
||||
|
||||
private Context mContext;
|
||||
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> mDataset;
|
||||
private HashMap<OrdineListModel, Boolean> mCheckBoxes = new HashMap<>();
|
||||
private RunnableArgs<OrdineVenditaGroupedInevasoDTO> mOnGroupSelected;
|
||||
private RunnableArgs<OrdineVenditaGroupedInevasoDTO.Ordine> 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<OrdineVenditaInevasoDTO> myDataset, RunnableArgs<OrdineVenditaGroupedInevasoDTO> onGroupSelected, RunnableArgs<OrdineVenditaGroupedInevasoDTO.Ordine> onSingleSelectionChanged) {
|
||||
mContext = context;
|
||||
mDataset = orderItems(myDataset);
|
||||
mOnGroupSelected = onGroupSelected;
|
||||
mOnSingleSelectionChanged = onSingleSelectionChanged;
|
||||
}
|
||||
|
||||
public void updateItems(List<OrdineVenditaInevasoDTO> updatedDataset) {
|
||||
mDataset.clear();
|
||||
mDataset.addAll(orderItems(updatedDataset));
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
private List<OrdineVenditaInevasoDTO> orderItems(List<OrdineVenditaInevasoDTO> dataset) {
|
||||
|
||||
Stream.of(dataset)
|
||||
.forEach(x -> {
|
||||
|
||||
//if(!mCheckBoxes.containsKey(key)) {
|
||||
mCheckBoxes.put((OrdineListModel)x, false);
|
||||
//} else {
|
||||
//mCheckBoxes.get(key) = false;
|
||||
//}
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
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 -> {
|
||||
Stream.of(mCheckBoxes)
|
||||
.filter(x -> x.getKey().equals(mDataset.get(nextItemPosition)))
|
||||
.forEach(x -> mCheckBoxes.put(x.getKey(), true));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindItemViewHolder(SingleItemViewHolder holder, int itemPosition) {
|
||||
holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener(null);
|
||||
|
||||
|
||||
OrdineVenditaInevasoDTO ordine = mDataset.get(itemPosition);
|
||||
|
||||
holder.binding.emptyView.setBackgroundColor(Color.RED);
|
||||
|
||||
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.venditaMainListGroupItemContainerCheckBox.setChecked(mCheckBoxes.get(ordine));
|
||||
|
||||
holder.binding.venditaMainListGroupItemContainerCheckBox.setOnCheckedChangeListener((buttonView, isChecked) -> {
|
||||
mCheckBoxes.put((OrdineListModel) ordine, isChecked);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onPlaceSubheaderBetweenItems(int position) {
|
||||
if(!this.mDataset.get(position).getRagSocOrd().equalsIgnoreCase(this.mDataset.get(position+1).getRagSocOrd())) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemSize() {
|
||||
return mDataset.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getSectionTitle(int position) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
private static class OrdineListModel extends OrdineVenditaInevasoDTO {
|
||||
|
||||
protected OrdineListModel(Parcel in) {
|
||||
super(in);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
OrdineVenditaInevasoDTO that = (OrdineVenditaInevasoDTO) o;
|
||||
|
||||
if (!getDataOrdS().equals(that.getDataOrdS())) return false;
|
||||
if (!getNumOrd().equals(that.getNumOrd())) return false;
|
||||
if (!getGestione().equals(that.getGestione())) return false;
|
||||
return getDataConsS().equals(that.getDataConsS());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = getDataOrdS().hashCode();
|
||||
result = 31 * result + getNumOrd().hashCode();
|
||||
result = 31 * result + getGestione().hashCode();
|
||||
result = 31 * result + getDataConsS().hashCode();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -163,9 +163,14 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
|
||||
return data;
|
||||
}
|
||||
|
||||
public Date getDataOrdD() throws ParseException {
|
||||
public Date getDataOrdD() {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
|
||||
return sdf.parse(getDataOrdS());
|
||||
try {
|
||||
return sdf.parse(getDataOrdS());
|
||||
} catch (ParseException e) {
|
||||
UtilityLogger.errorMe(e);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public OrdineVenditaInevasoDTO setData(String data) {
|
||||
@@ -488,4 +493,24 @@ public class OrdineVenditaInevasoDTO implements Parcelable {
|
||||
this.existCollo = existCollo;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
OrdineVenditaInevasoDTO that = (OrdineVenditaInevasoDTO) o;
|
||||
|
||||
if (!data.equals(that.data)) return false;
|
||||
if (!numero.equals(that.numero)) return false;
|
||||
return getGestione().equals(that.getGestione());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = data.hashCode();
|
||||
result = 31 * result + numero.hashCode();
|
||||
result = 31 * result + getGestione().hashCode();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user