Primo refactoring

This commit is contained in:
Giuseppe Scorrano 2019-06-27 08:22:16 +02:00
parent 768f60d57c
commit 836a5c186b
9 changed files with 361 additions and 108 deletions

View File

@ -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);

View File

@ -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);
}

View File

@ -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 -> {

View File

@ -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);

View File

@ -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;
}
}
}

View File

@ -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;
}
}

View File

@ -429,51 +429,51 @@
</RelativeLayout>
<!--<RelativeLayout-->
<!--android:id="@+id/fast_button_resi_clienti"-->
<!--android:layout_width="0dp"-->
<!--android:layout_height="wrap_content"-->
<!--app:layout_constraintTop_toBottomOf="@id/fast_button_versamento"-->
<!--app:layout_constraintStart_toEndOf="@id/guide_1"-->
<!--app:layout_constraintEnd_toEndOf="parent">-->
<RelativeLayout
android:id="@+id/fast_button_resi_clienti"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@id/fast_button_versamento"
app:layout_constraintStart_toEndOf="@id/guide_1"
app:layout_constraintEnd_toEndOf="parent">
<!--<com.google.android.material.card.MaterialCardView-->
<!--style="@style/Widget.MaterialComponents.CardView"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_margin="8dp"-->
<!--app:cardBackgroundColor="@android:color/white"-->
<!--app:cardCornerRadius="4dp">-->
<com.google.android.material.card.MaterialCardView
style="@style/Widget.MaterialComponents.CardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
app:cardBackgroundColor="@android:color/white"
app:cardCornerRadius="4dp">
<!--<LinearLayout-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="wrap_content"-->
<!--android:gravity="center_horizontal"-->
<!--android:orientation="vertical"-->
<!--android:padding="8dp">-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="vertical"
android:padding="8dp">
<!--<ImageView-->
<!--android:layout_width="64sp"-->
<!--android:layout_height="wrap_content"-->
<!--android:adjustViewBounds="true"-->
<!--android:src="@drawable/ic_latest_delivery" />-->
<ImageView
android:layout_width="64sp"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:src="@drawable/ic_latest_delivery" />
<!--<androidx.appcompat.widget.AppCompatTextView-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_marginTop="16dp"-->
<!--android:gravity="center_horizontal"-->
<!--android:text="@string/fragment_ultime_consegne_cliente_title"-->
<!--android:textAllCaps="true"-->
<!--android:textColor="@color/gray_700"-->
<!--android:textStyle="bold" />-->
<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:gravity="center_horizontal"
android:text="@string/fragment_ultime_consegne_cliente_title"
android:textAllCaps="true"
android:textColor="@color/gray_700"
android:textStyle="bold" />
<!--</LinearLayout>-->
<!--</com.google.android.material.card.MaterialCardView>-->
</LinearLayout>
</com.google.android.material.card.MaterialCardView>
<!--</RelativeLayout>-->
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -1,68 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:id="@+id/empty_view"
android:layout_width="6dp"
android:layout_height="match_parent"
android:layout_alignBottom="@id/vendita_main_list_group_item_container_root"/>
<RelativeLayout
android:id="@+id/vendita_main_list_group_item_container_root"
<layout>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="2dp"
android:paddingEnd="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_toEndOf="@id/empty_view">
android:layout_height="wrap_content">
<CheckBox
android:id="@+id/vendita_main_list_group_item_container_checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<View
android:id="@+id/empty_view"
android:layout_width="6dp"
android:layout_height="match_parent"
android:layout_alignBottom="@id/vendita_main_list_group_item_container_root"/>
<RelativeLayout
android:layout_width="wrap_content"
android:id="@+id/vendita_main_list_group_item_container_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toEndOf="@id/vendita_main_list_group_item_container_checkBox"
android:layout_alignParentEnd="true">
android:paddingStart="2dp"
android:paddingEnd="8dp"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_toEndOf="@id/empty_view">
<TextView
android:id="@+id/vendita_main_list_group_item_container_testata_data_cons"
<CheckBox
android:id="@+id/vendita_main_list_group_item_container_checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cons 07 nov 2018"
android:layout_alignParentEnd="true"
android:textColor="#000" />
android:layout_toEndOf="@id/vendita_main_list_group_item_container_checkBox"
android:layout_alignParentEnd="true">
<TextView
android:id="@+id/vendita_main_list_group_item_container_testata_ord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ord. Ven. 39 del 27 ott 2017"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#000"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/vendita_main_list_group_item_container_testata_data_cons"/>
<TextView
android:id="@+id/vendita_main_list_group_item_container_testata_data_cons"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Cons 07 nov 2018"
android:layout_alignParentEnd="true"
android:textColor="#000" />
<TextView
android:id="@+id/vendita_main_list_group_item_container_testata_ord"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Ord. Ven. 39 del 27 ott 2017"
android:ellipsize="end"
android:maxLines="1"
android:textColor="#000"
android:layout_alignParentStart="true"
android:layout_toStartOf="@id/vendita_main_list_group_item_container_testata_data_cons"/>
<LinearLayout
android:id="@+id/vendita_main_list_group_item_container_clienti_ord"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/vendita_main_list_group_item_container_testata_ord"
android:orientation="vertical">
</LinearLayout>
<TextView
android:id="@+id/vendita_main_list_group_item_container_detail_ord"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="end"
android:paddingEnd="6dp"
android:text="TextView"
android:layout_below="@+id/vendita_main_list_group_item_container_testata_ord" />
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
</RelativeLayout>
</layout>

View File

@ -1,3 +1,4 @@
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
@ -58,4 +59,6 @@
</androidx.cardview.widget.CardView>
</LinearLayout>
</LinearLayout>
</layout>