Implementato flag allow empty destinatario

This commit is contained in:
Giuseppe Scorrano 2022-03-08 15:55:53 +01:00
parent da70d7c064
commit acb7727f3c
10 changed files with 117 additions and 49 deletions

View File

@ -22,7 +22,7 @@ public class DBSettingsModel {
private String defaultCausaleRettificaGiacenze; private String defaultCausaleRettificaGiacenze;
private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione; private DistribuzioneColloDTO.CriterioDistribuzione defaultCriterioDistribuzione;
private boolean flagAskClienteInPickingLibero; private boolean flagAskClienteInPickingLibero;
private boolean flagAllowEmptyClienteInPickingLibero; private boolean flagPickLiberoAllowEmptyCliente;
private boolean flagCanAddExtraItemSpedizione; private boolean flagCanAddExtraItemSpedizione;
private boolean flagCanAutoOpenNewULAccettazione; private boolean flagCanAutoOpenNewULAccettazione;
@ -42,6 +42,7 @@ public class DBSettingsModel {
private String reportNameSpedizionChiudiOrdine; private String reportNameSpedizionChiudiOrdine;
private int onNumCnfInputChanged = 1; private int onNumCnfInputChanged = 1;
private boolean flagAccettazioneUseQtaOrd = false; private boolean flagAccettazioneUseQtaOrd = false;
private boolean flagPickLiberoAllowEmptyDest = false;
public boolean isFlagSpedizioneEnableFakeGiacenza() { public boolean isFlagSpedizioneEnableFakeGiacenza() {
return flagSpedizioneEnableFakeGiacenza; return flagSpedizioneEnableFakeGiacenza;
@ -141,12 +142,12 @@ public class DBSettingsModel {
return this; return this;
} }
public boolean isFlagAllowEmptyClienteInPickingLibero() { public boolean isFlagPickLiberoAllowEmptyCliente() {
return flagAllowEmptyClienteInPickingLibero; return flagPickLiberoAllowEmptyCliente;
} }
public DBSettingsModel setFlagAllowEmptyClienteInPickingLibero(boolean flagAllowEmptyClienteInPickingLibero) { public DBSettingsModel setFlagPickLiberoAllowEmptyCliente(boolean flagPickLiberoAllowEmptyCliente) {
this.flagAllowEmptyClienteInPickingLibero = flagAllowEmptyClienteInPickingLibero; this.flagPickLiberoAllowEmptyCliente = flagPickLiberoAllowEmptyCliente;
return this; return this;
} }
@ -312,4 +313,13 @@ public class DBSettingsModel {
this.flagAccettazioneUseQtaOrd = flagAccettazioneUseQtaOrd; this.flagAccettazioneUseQtaOrd = flagAccettazioneUseQtaOrd;
return this; return this;
} }
public boolean isFlagPickLiberoAllowEmptyDest() {
return flagPickLiberoAllowEmptyDest;
}
public DBSettingsModel setFlagPickLiberoAllowEmptyDest(boolean flagPickLiberoAllowEmptyDest) {
this.flagPickLiberoAllowEmptyDest = flagPickLiberoAllowEmptyDest;
return this;
}
} }

View File

@ -282,6 +282,10 @@ public class SettingsManager {
.setGestName("PICKING") .setGestName("PICKING")
.setSection("ACCETTAZIONE") .setSection("ACCETTAZIONE")
.setKeySection("FLAG_USE_QTA_ORD")); .setKeySection("FLAG_USE_QTA_ORD"));
stbGestSetupList.add(new StbGestSetup()
.setGestName("PICKING")
.setSection("PICKING_LIBERO")
.setKeySection("FLAG_ALLOW_EMPTY_DEST"));
GestSetupRESTConsumer.getValues(stbGestSetupList, list -> { GestSetupRESTConsumer.getValues(stbGestSetupList, list -> {
@ -291,7 +295,7 @@ public class SettingsManager {
dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP", "COD_ANAG_DEFAULT", String.class)); dbSettingsModelIstance.setDefaultCodAnag(getValueFromList(list, "SETUP", "COD_ANAG_DEFAULT", String.class));
dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", String.class)); dbSettingsModelIstance.setDefaultCriterioDistribuzione(getValueFromList(list, "SETUP", "DEFAULT_CRITERIO_DISTRIBUZIONE", String.class));
dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class)); dbSettingsModelIstance.setFlagAskClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ASK_CLIENTE", Boolean.class));
dbSettingsModelIstance.setFlagAllowEmptyClienteInPickingLibero(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class)); dbSettingsModelIstance.setFlagPickLiberoAllowEmptyCliente(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_CLIENTE", Boolean.class));
dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class)); dbSettingsModelIstance.setFlagCanAddExtraItemSpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_ITEMS", Boolean.class));
dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "ACCETTAZIONE", "FLAG_AUTO_OPEN_NEW_UL", Boolean.class)); dbSettingsModelIstance.setFlagCanAutoOpenNewULAccettazione(getValueFromList(list, "ACCETTAZIONE", "FLAG_AUTO_OPEN_NEW_UL", Boolean.class));
dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class)); dbSettingsModelIstance.setFlagCanAddExtraQuantitySpedizione(getValueFromList(list, "SPEDIZIONE", "FLAG_CAN_ADD_EXTRA_QUANTITY", Boolean.class));
@ -309,6 +313,7 @@ public class SettingsManager {
dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class)); dbSettingsModelIstance.setFlagOrdinaNuoviArticoliInGriglia(getValueFromList(list, "ORDINI_A", "ORDINA_NUOVI_ARTICOLI", Boolean.class));
dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class)); dbSettingsModelIstance.setDocInterniCheckFornitore(getValueFromList(list, "DOC_INTERNI", "CHECK_FORNITORE", String.class));
dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class)); dbSettingsModelIstance.setFlagAccettazioneUseQtaOrd(getValueFromList(list, "ACCETTAZIONE", "FLAG_USE_QTA_ORD", Boolean.class));
dbSettingsModelIstance.setFlagPickLiberoAllowEmptyDest(getValueFromList(list, "PICKING_LIBERO", "FLAG_ALLOW_EMPTY_DEST", Boolean.class));
String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class); String notePerdita = getValueFromList(list, "DOC_INTERNI", "NOTE_PERDITA", String.class);
if (notePerdita != null) { if (notePerdita != null) {

View File

@ -94,7 +94,7 @@ public class DialogAskClienteDestinatarioDTO {
@Override @Override
public String toString() { public String toString() {
return String.format("%s (%s)", getDestinatario(), getCodVdes()); return getDestinatario() + (getCodVdes() != null ? (" (" + getCodVdes() + ")") : "");
} }
public VtbDest toVtbDestModel() { public VtbDest toVtbDestModel() {

View File

@ -145,7 +145,12 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
private void initializeAdapter(ArrayList<DialogAskClienteClienteDTO> items) { private void initializeAdapter(ArrayList<DialogAskClienteClienteDTO> items) {
DialogAskCliente_Page1_Cliente_ArrayAdapter adapter = new DialogAskCliente_Page1_Cliente_ArrayAdapter(mContext, items);
var orderedList = Stream.of(items)
.sortBy(x -> x.getRagSoc() != null ? x.getRagSoc() : "")
.toList();
DialogAskCliente_Page1_Cliente_ArrayAdapter adapter = new DialogAskCliente_Page1_Cliente_ArrayAdapter(mContext, orderedList);
AutoCompleteTextView editTextDropdownCliente = mBinding.dropdownCliente; AutoCompleteTextView editTextDropdownCliente = mBinding.dropdownCliente;
editTextDropdownCliente.setThreshold(0); editTextDropdownCliente.setThreshold(0);
@ -177,7 +182,7 @@ public class DialogAskCliente_Page1ViewModel implements IDialogAskClienteViewMod
private boolean validateCliente() { private boolean validateCliente() {
if (SettingsManager.iDB().isFlagAllowEmptyClienteInPickingLibero() && mBinding.inputCliente.getEditText().getText().toString().trim().length() == 0) { if (SettingsManager.iDB().isFlagPickLiberoAllowEmptyCliente() && mBinding.inputCliente.getEditText().getText().toString().trim().length() == 0) {
return true; return true;
} else return getCurrentCliente() != null; } else return getCurrentCliente() != null;
} }

View File

@ -20,13 +20,13 @@ import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskCliente
public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter<DialogAskClienteClienteDTO> implements Filterable { public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter<DialogAskClienteClienteDTO> implements Filterable {
private Context mContext; private final Context mContext;
private List<DialogAskClienteClienteDTO> mDataset; private final List<DialogAskClienteClienteDTO> mDataset;
private List<DialogAskClienteClienteDTO> mDatasetAllItems; private List<DialogAskClienteClienteDTO> mDatasetAllItems;
private ListFilter listFilter = new ListFilter(); private final ListFilter listFilter = new ListFilter();
public DialogAskCliente_Page1_Cliente_ArrayAdapter(@NonNull Context context, @NonNull ArrayList<DialogAskClienteClienteDTO> list) { public DialogAskCliente_Page1_Cliente_ArrayAdapter(@NonNull Context context, @NonNull List<DialogAskClienteClienteDTO> list) {
super(context, 0 , list); super(context, 0 , list);
mContext = context; mContext = context;
mDataset = list; mDataset = list;
@ -37,13 +37,15 @@ public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter<Di
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View listItem = convertView; View listItem = convertView;
if(listItem == null) { if(listItem == null) {
listItem = LayoutInflater.from(mContext).inflate(R.layout.dropdown_simple_item, parent, false); listItem = LayoutInflater.from(mContext).inflate(R.layout.dropdown_simple_item_w_subtitle, parent, false);
} }
if(position < mDataset.size()) { if(position < mDataset.size()) {
AppCompatTextView textView = listItem.findViewById(R.id.text); AppCompatTextView textView = listItem.findViewById(R.id.title);
AppCompatTextView subTitle = listItem.findViewById(R.id.subtitle);
textView.setText(mDataset.get(position).getRagSoc()); textView.setText(mDataset.get(position).getRagSoc());
subTitle.setText(mDataset.get(position).getCodAnag());
return listItem; return listItem;
} }
@ -59,7 +61,7 @@ public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter<Di
} }
public class ListFilter extends Filter { public class ListFilter extends Filter {
private Object lock = new Object(); private final Object lock = new Object();
@Override @Override
protected FilterResults performFiltering(CharSequence prefix) { protected FilterResults performFiltering(CharSequence prefix) {
@ -81,7 +83,7 @@ public class DialogAskCliente_Page1_Cliente_ArrayAdapter extends ArrayAdapter<Di
ArrayList<DialogAskClienteClienteDTO> matchValues = new ArrayList<>(); ArrayList<DialogAskClienteClienteDTO> matchValues = new ArrayList<>();
for (DialogAskClienteClienteDTO dataItem : mDatasetAllItems) { for (DialogAskClienteClienteDTO dataItem : mDatasetAllItems) {
if (dataItem.getRagSoc().toLowerCase().startsWith(searchStrLowerCase)) { if (dataItem.getRagSoc().toLowerCase().contains(searchStrLowerCase)) {
matchValues.add(dataItem); matchValues.add(dataItem);
} }
} }

View File

@ -23,7 +23,7 @@ public class DialogAskCliente_Page1_Commessa_ArrayAdapter extends ArrayAdapter<S
private List<String> mDataset = new ArrayList<>(); private List<String> mDataset = new ArrayList<>();
private List<String> mDatasetAllItems; private List<String> mDatasetAllItems;
private DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter listFilter = new DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter(); private final DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter listFilter = new DialogAskCliente_Page1_Commessa_ArrayAdapter.ListFilter();
public DialogAskCliente_Page1_Commessa_ArrayAdapter(@NonNull Context context) { public DialogAskCliente_Page1_Commessa_ArrayAdapter(@NonNull Context context) {
super(context, 0); super(context, 0);
@ -56,7 +56,7 @@ public class DialogAskCliente_Page1_Commessa_ArrayAdapter extends ArrayAdapter<S
} }
public class ListFilter extends Filter { public class ListFilter extends Filter {
private Object lock = new Object(); private final Object lock = new Object();
@Override @Override
protected FilterResults performFiltering(CharSequence prefix) { protected FilterResults performFiltering(CharSequence prefix) {
@ -78,7 +78,7 @@ public class DialogAskCliente_Page1_Commessa_ArrayAdapter extends ArrayAdapter<S
ArrayList<String> matchValues = new ArrayList<>(); ArrayList<String> matchValues = new ArrayList<>();
for (String dataItem : mDatasetAllItems) { for (String dataItem : mDatasetAllItems) {
if (dataItem.toLowerCase().startsWith(searchStrLowerCase)) { if (dataItem.toLowerCase().contains(searchStrLowerCase)) {
matchValues.add(dataItem); matchValues.add(dataItem);
} }
} }

View File

@ -11,6 +11,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import it.integry.integrywmsnative.R; import it.integry.integrywmsnative.R;
import it.integry.integrywmsnative.core.settings.SettingsManager;
import it.integry.integrywmsnative.databinding.DialogAskClientePage2Binding; import it.integry.integrywmsnative.databinding.DialogAskClientePage2Binding;
import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO; import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskClienteDestinatarioDTO;
@ -57,6 +58,12 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
return; return;
} }
if(SettingsManager.iDB().isFlagPickLiberoAllowEmptyDest()) {
filteredDestinatari.add(new DialogAskClienteDestinatarioDTO()
.setCodAnag(null)
.setDestinatario("Nessuno"));
}
initializeAdapter(filteredDestinatari); initializeAdapter(filteredDestinatari);
@ -95,7 +102,11 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
private void initializeAdapter(List<DialogAskClienteDestinatarioDTO> items) { private void initializeAdapter(List<DialogAskClienteDestinatarioDTO> items) {
DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, items); var orderedList = Stream.of(items)
.sortBy(x -> x.getCodAnag() != null ? x.getCodAnag() : "")
.toList();
DialogAskCliente_Page2_ArrayAdapter adapter = new DialogAskCliente_Page2_ArrayAdapter(mContext, orderedList);
AutoCompleteTextView editTextFilledExposedDropdown = mBinding.dropdownDestinatario; AutoCompleteTextView editTextFilledExposedDropdown = mBinding.dropdownDestinatario;
@ -105,7 +116,9 @@ public class DialogAskCliente_Page2ViewModel implements IDialogAskClienteViewMod
private boolean validateDestinatario() { private boolean validateDestinatario() {
return getCurrentDestinatario() != null; if (SettingsManager.iDB().isFlagPickLiberoAllowEmptyDest() && getCurrentDestinatario() == null) {
return true;
} else return getCurrentDestinatario() != null;
} }
public DialogAskClienteDestinatarioDTO getCurrentDestinatario() { public DialogAskClienteDestinatarioDTO getCurrentDestinatario() {

View File

@ -11,6 +11,7 @@ import android.widget.Filterable;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.appcompat.widget.AppCompatTextView; import androidx.appcompat.widget.AppCompatTextView;
import androidx.core.content.ContextCompat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -21,14 +22,15 @@ import it.integry.integrywmsnative.view.dialogs.ask_cliente.dto.DialogAskCliente
public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter<DialogAskClienteDestinatarioDTO> implements Filterable { public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter<DialogAskClienteDestinatarioDTO> implements Filterable {
private Context mContext; private final Context mContext;
private List<DialogAskClienteDestinatarioDTO> mDataset; private final List<DialogAskClienteDestinatarioDTO> mDataset;
private List<DialogAskClienteDestinatarioDTO> mDatasetAllItems; private List<DialogAskClienteDestinatarioDTO> mDatasetAllItems;
private ListFilter listFilter = new ListFilter(); private final ListFilter listFilter = new ListFilter();
public DialogAskCliente_Page2_ArrayAdapter(@NonNull Context context, @NonNull List<DialogAskClienteDestinatarioDTO> list) { public DialogAskCliente_Page2_ArrayAdapter(@NonNull Context context, @NonNull List<DialogAskClienteDestinatarioDTO> list) {
super(context, 0 , list); super(context, 0 , list);
mContext = context; mContext = context;
mDataset = list; mDataset = list;
} }
@ -43,18 +45,21 @@ public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter<DialogAskC
if(position < mDataset.size()) { if(position < mDataset.size()) {
var item = mDataset.get(position);
AppCompatTextView destinatario = listItem.findViewById(R.id.destinatario); AppCompatTextView destinatario = listItem.findViewById(R.id.destinatario);
destinatario.setText(UtilityString.capitalizeWords(mDataset.get(position).toString())); destinatario.setText(UtilityString.capitalizeWords(item.getDestinatario() + (item.getCodVdes() != null ? ("(" + item.getCodVdes() + ")") : "")));
if(item.getCodVdes() == null) destinatario.setTextColor(ContextCompat.getColor(mContext, R.color.gray_800));
AppCompatTextView subtitle = listItem.findViewById(R.id.subtitle); AppCompatTextView subtitle = listItem.findViewById(R.id.subtitle);
StringBuilder subtitleStr = new StringBuilder(); StringBuilder subtitleStr = new StringBuilder();
if(!UtilityString.isNullOrEmpty(mDataset.get(position).getCitta())) { if(!UtilityString.isNullOrEmpty(mDataset.get(position).getCitta())) {
subtitleStr.append(UtilityString.capitalizeWords(mDataset.get(position).getCitta()) + " - "); subtitleStr.append(UtilityString.capitalizeWords(item.getCitta())).append(" - ");
} }
if(!UtilityString.isNullOrEmpty(mDataset.get(position).getIndirizzo())) { if(!UtilityString.isNullOrEmpty(mDataset.get(position).getIndirizzo())) {
subtitleStr.append(UtilityString.capitalizeWords(mDataset.get(position).getIndirizzo())); subtitleStr.append(UtilityString.capitalizeWords(item.getIndirizzo()));
} }
subtitle.setText(subtitleStr); subtitle.setText(subtitleStr);
@ -95,7 +100,7 @@ public class DialogAskCliente_Page2_ArrayAdapter extends ArrayAdapter<DialogAskC
ArrayList<DialogAskClienteDestinatarioDTO> matchValues = new ArrayList<>(); ArrayList<DialogAskClienteDestinatarioDTO> matchValues = new ArrayList<>();
for (DialogAskClienteDestinatarioDTO dataItem : mDatasetAllItems) { for (DialogAskClienteDestinatarioDTO dataItem : mDatasetAllItems) {
if (dataItem.toString().toLowerCase().startsWith(searchStrLowerCase)) { if (dataItem.toString().toLowerCase().contains(searchStrLowerCase)) {
matchValues.add(dataItem); matchValues.add(dataItem);
} }
} }

View File

@ -1,38 +1,33 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingStart="16dp" android:paddingStart="16dp"
android:paddingEnd="16dp"
android:paddingTop="8dp" android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp"> android:paddingBottom="8dp">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/destinatario" android:id="@+id/destinatario"
style="@style/AppTheme.NewMaterial.Text"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:ellipsize="end" android:ellipsize="end"
android:maxLines="1" android:maxLines="1"
android:textAppearance="?attr/textAppearanceSubtitle1" android:textAppearance="?attr/textAppearanceSubtitle1"
tools:text="Destinatario" tools:text="Destinatario" />
style="@style/AppTheme.NewMaterial.Text"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<androidx.appcompat.widget.AppCompatTextView <androidx.appcompat.widget.AppCompatTextView
android:id="@+id/subtitle" android:id="@+id/subtitle"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:maxLines="1" android:maxLines="1"
android:textAppearance="?attr/textAppearanceSubtitle1" android:textAppearance="?attr/textAppearanceSubtitle1"
tools:text="Città" android:textColor="@color/gray_800"
style="@style/AppTheme.NewMaterial.Text.Small"/> tools:text="Città" />
</LinearLayout>
</LinearLayout> </androidx.appcompat.widget.LinearLayoutCompat>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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:orientation="vertical"
android:paddingStart="16dp"
android:paddingTop="8dp"
android:paddingEnd="16dp"
android:paddingBottom="8dp">
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/title"
style="@style/AppTheme.NewMaterial.Text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textAppearance="?attr/textAppearanceSubtitle1"
tools:text="Destinatario" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/subtitle"
style="@style/AppTheme.NewMaterial.Text.Small"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:textAppearance="?attr/textAppearanceSubtitle1"
android:textColor="@color/gray_800"
tools:text="Città" />
</androidx.appcompat.widget.LinearLayoutCompat>