Ho bisogno di misurare l'altezza totale del ListView ma sembra che ottenga costantemente valori errati. Sto usando questo codice:Android: come misurare l'altezza totale di ListView
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
MeasureSpec.AT_MOST);
Log.w("DESIRED WIDTH", String.valueOf(listAdapter.getCount()));
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += listItem.getMeasuredHeight();
Log.w("HEIGHT"+i, String.valueOf(totalHeight));
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
Il problema è che sto ricevendo un'altezza superiore a quella che dovrei ricevere. Ogni elemento della lista viene misurato in modo diverso e tutti gli elementi hanno la stessa altezza, quindi sicuramente non dovrebbe farlo. L'altezza di ogni elemento è almeno il doppio della sua altezza reale.
Grazie in anticipo.
edit1:
ho due ListViews ed entrambi hanno oggetti con 6-7 campi EditText. Mostrare/nascondere ListView se l'utente vuole scrivere/cancellare valori in EditText. Tutto funziona bene, tranne quando voglio mostrare la lista, ci vuole un sacco di spazio perché il ListView calcolato dal metodo ha bisogno di molto spazio. Per questo motivo ho un sacco di spazio vuoto al di sotto di ListView. Come lo spazio vuoto tre volte più necessario.
http://stackoverflow.com/questions/2312683/calculate-the-size-of-a-list-view-or- how-to-tell-it-to-fully-expand – RobinHood
Grazie, ma questo non funziona per me. Penso di avere questo problema perché non ho un solo ListView. Probabilmente c'è qualche conflitto con la copertura spaziale. – Cristiano