Migliorie sul caricamento della lista di ordini di uscita

This commit is contained in:
Giuseppe Scorrano 2025-02-26 13:06:56 +01:00
parent b8c8a9d8ea
commit 6c621d5ca8
8 changed files with 178 additions and 124 deletions

View File

@ -41,15 +41,15 @@ public abstract class SectionedRecyclerViewAdapter<H extends RecyclerView.ViewHo
this.sharedPool = new RecyclerView.RecycledViewPool(); this.sharedPool = new RecyclerView.RecycledViewPool();
// Aumentiamo il pool di ViewHolder per tipo // Aumentiamo il pool di ViewHolder per tipo
sharedPool.setMaxRecycledViews(TYPE_HEADER, 50); sharedPool.setMaxRecycledViews(TYPE_HEADER, 500);
sharedPool.setMaxRecycledViews(TYPE_ITEM, 200); sharedPool.setMaxRecycledViews(TYPE_ITEM, 2000);
} }
@Override @Override
public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView); super.onAttachedToRecyclerView(recyclerView);
profiler = new RecyclerViewProfiler(recyclerView); profiler = new RecyclerViewProfiler(recyclerView);
profiler.enableProfiling(false); profiler.enableProfiling(true);
recyclerView.setRecycledViewPool(sharedPool); recyclerView.setRecycledViewPool(sharedPool);
@ -57,20 +57,20 @@ public abstract class SectionedRecyclerViewAdapter<H extends RecyclerView.ViewHo
if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) { if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
layoutManager.setItemPrefetchEnabled(true); layoutManager.setItemPrefetchEnabled(true);
layoutManager.setInitialPrefetchItemCount(50); // layoutManager.setInitialPrefetchItemCount(20);
} }
// recyclerView.post(() -> { // recyclerView.postDelayed(() -> {
// Precarica alcuni ViewHolder // Precarica alcuni ViewHolder
// for (int i = 0; i < 25; i++) { // for (int i = 0; i < 100; i++) {
// sharedPool.putRecycledView( // sharedPool.putRecycledView(
// createViewHolder(recyclerView, TYPE_HEADER)); // createViewHolder(recyclerView, TYPE_HEADER));
// } // }
// for (int i = 0; i < 50; i++) { // for (int i = 0; i < 100; i++) {
// sharedPool.putRecycledView( // sharedPool.putRecycledView(
// createViewHolder(recyclerView, TYPE_ITEM)); // createViewHolder(recyclerView, TYPE_ITEM));
// } // }
// }); // }, 50);
} }
protected static class Section { protected static class Section {

View File

@ -4,6 +4,7 @@ import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.text.Html; import android.text.Html;
import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -69,12 +70,12 @@ import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.FilterViagg
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.OrdiniUscitaElencoFiltroViewModel; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.filters.OrdiniUscitaElencoFiltroViewModel;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoAdapter; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoAdapter;
import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoListModel; import it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui.OrdiniUscitaElencoListModel;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity; import it.integry.integrywmsnative.gest.spedizione.SpedizioneActivity;
import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView; import it.integry.integrywmsnative.gest.spedizione.dialogs.row_info.BaseDialogRowInfoView;
import it.integry.integrywmsnative.ui.ElevatedToolbar; import it.integry.integrywmsnative.ui.ElevatedToolbar;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO; import it.integry.integrywmsnative.ui.filter_chips.FilterChipDTO;
import it.integry.integrywmsnative.ui.filter_chips.FilterChipView; import it.integry.integrywmsnative.ui.filter_chips.FilterChipView;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterCommessaLayoutView;
import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView; import it.integry.integrywmsnative.ui.filter_chips.filters.FilterNumeroOrdineLayoutView;
import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView; import it.integry.integrywmsnative.view.dialogs.base.DialogSimpleMessageView;
@ -168,11 +169,11 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
mBindings.setView(this); mBindings.setView(this);
mBindings.setViewmodel(mViewModel); mBindings.setViewmodel(mViewModel);
this.initRecyclerView(); Log.d("onCreateView", "Started");
this.initBarcodeReader(); this.initBarcodeReader();
this.initFilters(); Log.d("onCreateView", "Ended");
return mBindings.getRoot(); return mBindings.getRoot();
} }
@ -180,37 +181,41 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
public void onStart() { public void onStart() {
super.onStart(); super.onStart();
Log.d("onStart", "Started");
this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), data -> { this.mViewModel.getOrderList().observe(getViewLifecycleOwner(), data -> {
executorService.execute(() -> { executorService.execute(() -> {
try { try {
this.onLoadingStarted(); this.onLoadingStarted();
this.initMtbDepoCache();
this.initMtbGrupsCache(); this.initMtbGrupsCache();
this.initJtbComtCache(); this.initJtbComtCache();
handler.post(() -> {
mAppliedFilterViewModel.init(data); mAppliedFilterViewModel.init(data);
this.refreshList(data, null); this.refreshList(data, null);
});
this.onLoadingEnded(); this.onLoadingEnded();
} catch (Exception e) { } catch (Exception e) {
onError(e); onError(e);
} }
}); });
}); });
this.onLoadingStarted(); this.onLoadingStarted();
executorService.execute(() -> {
try { this.initRecyclerView();
this.initMtbDepoCache(); this.initFilters();
String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep(); String codMdep = SettingsManager.i().getUserSession().getDepo().getCodMdep();
mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol); mViewModel.init(codMdep, mCurrentGestioneOrd, mCurrentGestioneCol, mCurrentSegnoCol, () -> {
this.onLoadingEnded(); this.onLoadingEnded();
} catch (Exception e) {
onError(e);
}
}); });
Log.d("onStart", "Ended");
} }
@Override @Override
@ -227,14 +232,9 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
private void initRecyclerView() { private void initRecyclerView() {
this.onLoadingStarted();
boolean canSelectMultipleOrdini = SettingsManager.iDB().isFlagSpedizioneCanSelectMultipleOrders(); boolean canSelectMultipleOrdini = SettingsManager.iDB().isFlagSpedizioneCanSelectMultipleOrders();
boolean canSelectMultipleClienti = SettingsManager.iDB().isFlagMultiClienteOrdV(); boolean canSelectMultipleClienti = SettingsManager.iDB().isFlagMultiClienteOrdV();
executorService.execute(() -> {
OrdiniUscitaElencoAdapter ordiniUscitaElencoAdapter = OrdiniUscitaElencoAdapter ordiniUscitaElencoAdapter =
new OrdiniUscitaElencoAdapter(getActivity(), mOrdiniInevasiMutableData) new OrdiniUscitaElencoAdapter(getActivity(), mOrdiniInevasiMutableData)
@ -271,8 +271,6 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
this.mBindings.venditaMainList.setItemViewCacheSize(20); this.mBindings.venditaMainList.setItemViewCacheSize(20);
this.mBindings.venditaMainList.setAdapter(ordiniUscitaElencoAdapter); this.mBindings.venditaMainList.setAdapter(ordiniUscitaElencoAdapter);
});
this.onLoadingEnded();
// if (mToolbar != null) // if (mToolbar != null)
// mToolbar.setRecyclerView(this.mBindings.venditaMainList); // mToolbar.setRecyclerView(this.mBindings.venditaMainList);
@ -756,13 +754,11 @@ public class OrdiniUscitaElencoFragment extends BaseFragment implements ITitledF
var list = convertDataModelToListModel(tmpList); var list = convertDataModelToListModel(tmpList);
handler.post(() -> {
this.mOrdiniInevasiMutableData.clear(); this.mOrdiniInevasiMutableData.clear();
this.mOrdiniInevasiMutableData.addAll(list); this.mOrdiniInevasiMutableData.addAll(list);
fabVisible.set(mOrdiniInevasiMutableData.stream() fabVisible.set(mOrdiniInevasiMutableData.stream()
.anyMatch(y -> y.getSelectedObservable().get())); .anyMatch(y -> y.getSelectedObservable().get()));
});
} }
private List<OrdiniUscitaElencoListModel> convertDataModelToListModel(List<OrdiniUscitaElencoDTO> dataList) { private List<OrdiniUscitaElencoListModel> convertDataModelToListModel(List<OrdiniUscitaElencoDTO> dataList) {

View File

@ -1,5 +1,9 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco; package it.integry.integrywmsnative.gest.ordini_uscita_elenco;
import android.os.Handler;
import java.util.concurrent.ExecutorService;
import javax.inject.Singleton; import javax.inject.Singleton;
import dagger.Module; import dagger.Module;
@ -20,8 +24,8 @@ public class OrdiniUscitaElencoModule {
} }
@Provides @Provides
OrdiniUscitaElencoViewModel providesProdOrdineLavorazioneElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, OrdiniUscitaElencoRESTConsumer ordiniUscitaElencoRESTConsumer) { OrdiniUscitaElencoViewModel providesProdOrdineLavorazioneElencoViewModel(Handler handler, ExecutorService executorService, OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, OrdiniUscitaElencoRESTConsumer ordiniUscitaElencoRESTConsumer) {
return new OrdiniUscitaElencoViewModel(ordiniRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, ordiniUscitaElencoRESTConsumer); return new OrdiniUscitaElencoViewModel(handler, executorService, ordiniRESTConsumer, colliMagazzinoRESTConsumer, barcodeRESTConsumer, ordiniUscitaElencoRESTConsumer);
} }
} }

View File

@ -9,6 +9,7 @@ import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.ExecutorService;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.inject.Inject; import javax.inject.Inject;
@ -39,6 +40,8 @@ public class OrdiniUscitaElencoViewModel {
private final MutableLiveData<List<OrdiniUscitaElencoDTO>> mOrderList = new MutableLiveData<>(); private final MutableLiveData<List<OrdiniUscitaElencoDTO>> mOrderList = new MutableLiveData<>();
private final android.os.Handler mHandler;
private final ExecutorService executorService;
private final OrdiniRESTConsumer mOrdiniRESTConsumer; private final OrdiniRESTConsumer mOrdiniRESTConsumer;
private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer; private final ColliMagazzinoRESTConsumer mColliMagazzinoRESTConsumer;
private final BarcodeRESTConsumer mBarcodeRESTConsumer; private final BarcodeRESTConsumer mBarcodeRESTConsumer;
@ -51,7 +54,14 @@ public class OrdiniUscitaElencoViewModel {
private int mCurrentSegnoCol; private int mCurrentSegnoCol;
@Inject @Inject
public OrdiniUscitaElencoViewModel(OrdiniRESTConsumer ordiniRESTConsumer, ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer, BarcodeRESTConsumer barcodeRESTConsumer, OrdiniUscitaElencoRESTConsumer ordiniUscitaElencoRESTConsumer) { public OrdiniUscitaElencoViewModel(android.os.Handler handler,
ExecutorService executorService,
OrdiniRESTConsumer ordiniRESTConsumer,
ColliMagazzinoRESTConsumer colliMagazzinoRESTConsumer,
BarcodeRESTConsumer barcodeRESTConsumer,
OrdiniUscitaElencoRESTConsumer ordiniUscitaElencoRESTConsumer) {
this.mHandler = handler;
this.executorService = executorService;
this.mOrdiniRESTConsumer = ordiniRESTConsumer; this.mOrdiniRESTConsumer = ordiniRESTConsumer;
this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer; this.mColliMagazzinoRESTConsumer = colliMagazzinoRESTConsumer;
this.mBarcodeRESTConsumer = barcodeRESTConsumer; this.mBarcodeRESTConsumer = barcodeRESTConsumer;
@ -59,15 +69,18 @@ public class OrdiniUscitaElencoViewModel {
} }
public void init(String currentCodMdep, GestioneEnum gestioneOrd, GestioneEnum gestioneCol, int segnoCol) throws Exception { public void init(String currentCodMdep, GestioneEnum gestioneOrd, GestioneEnum gestioneCol, int segnoCol, Runnable onComplete) {
this.mCurrentCodMdep = currentCodMdep; this.mCurrentCodMdep = currentCodMdep;
this.mCurrentGestioneOrd = gestioneOrd; this.mCurrentGestioneOrd = gestioneOrd;
this.mCurrentGestioneCol = gestioneCol; this.mCurrentGestioneCol = gestioneCol;
this.mCurrentSegnoCol = segnoCol; this.mCurrentSegnoCol = segnoCol;
// Date loadingStartDate = new Date();
var ordiniLavorazione = this.mOrdiniRESTConsumer.getOrdiniInevasiSynchronized(this.mCurrentCodMdep, mCurrentGestioneOrd); executorService.execute(() -> {
List<OrdineUscitaInevasoDTO> ordiniLavorazione = null;
try {
ordiniLavorazione = this.mOrdiniRESTConsumer.getOrdiniInevasiSynchronized(this.mCurrentCodMdep, mCurrentGestioneOrd);
var orderList = ordiniLavorazione.parallelStream() var orderList = ordiniLavorazione.parallelStream()
.map(x -> { .map(x -> {
@ -81,15 +94,11 @@ public class OrdiniUscitaElencoViewModel {
.collect(Collectors.toList()); .collect(Collectors.toList());
this.mOrderList.postValue(orderList); this.mOrderList.postValue(orderList);
onComplete.run();
// long forcedDelaySecs = (new Date().getTime() - loadingStartDate.getTime()) / 1000; } catch (Exception e) {
// this.sendError(e);
// if (2 - forcedDelaySecs > 0) { }
// try { });
// Thread.sleep((2 - forcedDelaySecs) * 1000);
// } catch (Exception ignored) {
// }
// }
} }

View File

@ -9,9 +9,11 @@ import com.annimon.stream.function.Predicate;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
import it.integry.integrywmsnative.core.model.JtbComt; import it.integry.integrywmsnative.core.model.JtbComt;
import it.integry.integrywmsnative.core.model.MtbDepo; import it.integry.integrywmsnative.core.model.MtbDepo;
@ -44,7 +46,7 @@ public class OrdiniUscitaElencoFiltroViewModel {
public void init(List<OrdiniUscitaElencoDTO> initialList) { public void init(List<OrdiniUscitaElencoDTO> initialList) {
this.initialOrderList = initialList; this.initialOrderList = initialList;
this.currentFilteredOrderList.postValue(this.initialOrderList); this.currentFilteredOrderList.setValue(this.initialOrderList);
} }
public MutableLiveData<List<OrdiniUscitaElencoDTO>> getMutableFilteredOrderList() { public MutableLiveData<List<OrdiniUscitaElencoDTO>> getMutableFilteredOrderList() {
@ -349,13 +351,12 @@ public class OrdiniUscitaElencoFiltroViewModel {
public List<Integer> getAllNumOrds() { public List<Integer> getAllNumOrds() {
return Stream return Objects.requireNonNull(initialOrderList).parallelStream()
.of(Objects.requireNonNull(initialOrderList))
.filter(x -> x.getNumOrd() != null) .filter(x -> x.getNumOrd() != null)
.sortBy(x -> -x.getNumOrd()) .sorted(Comparator.comparing(OrdineInevasoDTO::getNumOrd))
.map(x -> x.getNumOrd() != null ? x.getNumOrd() : null) .map(x -> x.getNumOrd() != null ? x.getNumOrd() : null)
.distinct() .distinct()
.toList(); .collect(Collectors.toList());
} }
public List<Integer> getAvailableNumOrds() { public List<Integer> getAvailableNumOrds() {

View File

@ -34,6 +34,29 @@ public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerViewNew<
private RunnableArgs<String> mOnGroupItemClicked; private RunnableArgs<String> mOnGroupItemClicked;
private RunnableArgs<OrdiniUscitaElencoListModel> mOnItemChecked; private RunnableArgs<OrdiniUscitaElencoListModel> mOnItemChecked;
private final int transparentColor;
public OrdiniUscitaElencoAdapter(Context context, ObservableArrayList<OrdiniUscitaElencoListModel> mutableDataSet) {
super(mutableDataSet);
mContext = context;
layoutInflater = LayoutInflater.from(mContext);
transparentColor = ResourcesCompat.getColor(mContext.getResources(), android.R.color.transparent, null);
// asyncLayoutInflater = new AsyncLayoutInflater(mContext);
mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback<OrdiniUscitaElencoListModel>() {
@Override
public void onChanged(ObservableList<OrdiniUscitaElencoListModel> sender) {
Map<String, List<OrdiniUscitaElencoListModel>> collect = sender.stream()
.collect(Collectors.groupingBy(OrdiniUscitaElencoListModel::getGroupTitle));
String[] keyArray = new String[collect.keySet().size()];
collect.keySet().toArray(keyArray);
setSections(Arrays.asList(keyArray), collect);
}
});
}
static class SubheaderHolder extends RecyclerView.ViewHolder { static class SubheaderHolder extends RecyclerView.ViewHolder {
@ -57,27 +80,6 @@ public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerViewNew<
} }
} }
public OrdiniUscitaElencoAdapter(Context context, ObservableArrayList<OrdiniUscitaElencoListModel> mutableDataSet) {
super(mutableDataSet);
mContext = context;
layoutInflater = LayoutInflater.from(mContext);
// asyncLayoutInflater = new AsyncLayoutInflater(mContext);
mutableDataSet.addOnListChangedCallback(new OnListGeneralChangedCallback<OrdiniUscitaElencoListModel>() {
@Override
public void onChanged(ObservableList<OrdiniUscitaElencoListModel> sender) {
Map<String, List<OrdiniUscitaElencoListModel>> collect = sender.stream()
.collect(Collectors.groupingBy(OrdiniUscitaElencoListModel::getGroupTitle));
String[] keyArray = new String[collect.keySet().size()];
collect.keySet().toArray(keyArray);
setSections(Arrays.asList(keyArray), collect);
}
});
}
public OrdiniUscitaElencoAdapter setOnGroupItemClicked(RunnableArgs<String> onGroupItemClicked) { public OrdiniUscitaElencoAdapter setOnGroupItemClicked(RunnableArgs<String> onGroupItemClicked) {
this.mOnGroupItemClicked = onGroupItemClicked; this.mOnGroupItemClicked = onGroupItemClicked;
return this; return this;
@ -126,25 +128,25 @@ public class OrdiniUscitaElencoAdapter extends ExtendedSectionedRecyclerViewNew<
if (listModel.getEtichettaColor() != null) if (listModel.getEtichettaColor() != null)
holder.mBinding.emptyView.setBackgroundColor(listModel.getEtichettaColor()); holder.mBinding.emptyView.setBackgroundColor(listModel.getEtichettaColor());
else else
holder.mBinding.emptyView.setBackgroundColor(ResourcesCompat.getColor(mContext.getResources(), android.R.color.transparent, null)); holder.mBinding.emptyView.setBackgroundColor(transparentColor);
if (!UtilityString.isNullOrEmpty(listModel.getDescription())) { if (!UtilityString.isNullOrEmpty(listModel.getDescription())) {
holder.mBinding.descrizione.setText(Html.fromHtml(listModel.getDescription())); holder.mBinding.descrizione.setText(listModel.getDescriptionSpanned());
holder.mBinding.descrizione.setVisibility(View.VISIBLE); holder.mBinding.descrizione.setVisibility(View.VISIBLE);
} else holder.mBinding.descrizione.setVisibility(View.GONE); } else holder.mBinding.descrizione.setVisibility(View.GONE);
if (!UtilityString.isNullOrEmpty(listModel.getSubDescription())) { if (!UtilityString.isNullOrEmpty(listModel.getSubDescription())) {
holder.mBinding.subDescrizione.setText(Html.fromHtml(listModel.getSubDescription())); holder.mBinding.subDescrizione.setText(listModel.getSubDescriptionSpanned());
holder.mBinding.subDescrizione.setVisibility(View.VISIBLE); holder.mBinding.subDescrizione.setVisibility(View.VISIBLE);
} else holder.mBinding.subDescrizione.setVisibility(View.GONE); } else holder.mBinding.subDescrizione.setVisibility(View.GONE);
if (!UtilityString.isNullOrEmpty(listModel.getRightDescription())) { if (!UtilityString.isNullOrEmpty(listModel.getRightDescription())) {
holder.mBinding.rightDescrizione.setText(Html.fromHtml(listModel.getRightDescription())); holder.mBinding.rightDescrizione.setText(listModel.getRightDescriptionSpanned());
holder.mBinding.rightDescrizione.setVisibility(View.VISIBLE); holder.mBinding.rightDescrizione.setVisibility(View.VISIBLE);
} else holder.mBinding.rightDescrizione.setVisibility(View.GONE); } else holder.mBinding.rightDescrizione.setVisibility(View.GONE);
if (!UtilityString.isNullOrEmpty(listModel.getRightSubDescription())) { if (!UtilityString.isNullOrEmpty(listModel.getRightSubDescription())) {
holder.mBinding.rightSubDescrizione.setText(Html.fromHtml(listModel.getRightSubDescription())); holder.mBinding.rightSubDescrizione.setText(listModel.getRightSubDescriptionSpanned());
holder.mBinding.rightSubDescrizione.setVisibility(View.VISIBLE); holder.mBinding.rightSubDescrizione.setVisibility(View.VISIBLE);
} else holder.mBinding.rightSubDescrizione.setVisibility(View.GONE); } else holder.mBinding.rightSubDescrizione.setVisibility(View.GONE);

View File

@ -1,5 +1,8 @@
package it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui; package it.integry.integrywmsnative.gest.ordini_uscita_elenco.ui;
import android.text.Html;
import android.text.Spanned;
import androidx.annotation.ColorInt; import androidx.annotation.ColorInt;
import it.integry.integrywmsnative.core.di.BindableBoolean; import it.integry.integrywmsnative.core.di.BindableBoolean;
@ -13,6 +16,11 @@ public class OrdiniUscitaElencoListModel implements Cloneable {
private String rightDescription; private String rightDescription;
private String rightSubDescription; private String rightSubDescription;
private Spanned descriptionSpanned;
private Spanned subDescriptionSpanned;
private Spanned rightDescriptionSpanned;
private Spanned rightSubDescriptionSpanned;
private @ColorInt Integer etichettaColor; private @ColorInt Integer etichettaColor;
private boolean hidden; private boolean hidden;
@ -37,6 +45,7 @@ public class OrdiniUscitaElencoListModel implements Cloneable {
public OrdiniUscitaElencoListModel setDescription(String description) { public OrdiniUscitaElencoListModel setDescription(String description) {
this.description = description; this.description = description;
this.descriptionSpanned = description != null ? Html.fromHtml(description) : null;
return this; return this;
} }
@ -46,6 +55,7 @@ public class OrdiniUscitaElencoListModel implements Cloneable {
public OrdiniUscitaElencoListModel setSubDescription(String subDescription) { public OrdiniUscitaElencoListModel setSubDescription(String subDescription) {
this.subDescription = subDescription; this.subDescription = subDescription;
this.subDescriptionSpanned = subDescription != null ? Html.fromHtml(subDescription) : null;
return this; return this;
} }
@ -55,6 +65,7 @@ public class OrdiniUscitaElencoListModel implements Cloneable {
public OrdiniUscitaElencoListModel setRightDescription(String rightDescription) { public OrdiniUscitaElencoListModel setRightDescription(String rightDescription) {
this.rightDescription = rightDescription; this.rightDescription = rightDescription;
this.rightDescriptionSpanned = rightDescription != null ? Html.fromHtml(rightDescription) : null;
return this; return this;
} }
@ -64,6 +75,7 @@ public class OrdiniUscitaElencoListModel implements Cloneable {
public OrdiniUscitaElencoListModel setRightSubDescription(String rightSubDescription) { public OrdiniUscitaElencoListModel setRightSubDescription(String rightSubDescription) {
this.rightSubDescription = rightSubDescription; this.rightSubDescription = rightSubDescription;
this.rightSubDescriptionSpanned = rightSubDescription != null ? Html.fromHtml(rightSubDescription) : null;
return this; return this;
} }
@ -97,4 +109,20 @@ public class OrdiniUscitaElencoListModel implements Cloneable {
this.originalModel = originalModel; this.originalModel = originalModel;
return this; return this;
} }
public Spanned getDescriptionSpanned() {
return descriptionSpanned;
}
public Spanned getSubDescriptionSpanned() {
return subDescriptionSpanned;
}
public Spanned getRightDescriptionSpanned() {
return rightDescriptionSpanned;
}
public Spanned getRightSubDescriptionSpanned() {
return rightSubDescriptionSpanned;
}
} }

View File

@ -74,7 +74,12 @@ public class DialogProgressView extends DialogFragment {
try { try {
if (!manager.isDestroyed() && !isAdded()) { if (!manager.isDestroyed() && !isAdded()) {
//manager.executePendingTransactions(); try {
manager.executePendingTransactions();
} catch (IllegalStateException e) {
//ignore
String a = "";
}
showNow(manager, "loading-dialog"); showNow(manager, "loading-dialog");
mBindings.progressBar.setIndeterminate(isIndeterminateProgress()); mBindings.progressBar.setIndeterminate(isIndeterminateProgress());
@ -91,7 +96,16 @@ public class DialogProgressView extends DialogFragment {
handler.post(() -> { handler.post(() -> {
if (isAdded()) { if (isAdded()) {
dismissAllowingStateLoss(); dismissAllowingStateLoss();
if (!getParentFragmentManager().isDestroyed()) {
try {
getParentFragmentManager().executePendingTransactions();
} catch (IllegalStateException e) {
//ignore
String a = "";
} }
}
}
}); });
} }