1
12nico07
Neues Mitglied
- 0
Hi,
ich habe eine Listview. Jedes Item ist eine Checkbox, deren Text unterschiedlich lang ist. Mal 1 zeile mal 5 Zeilen.
Wenn die Listview alle Items anzeigen kann (und man nicht scrollen muss) soll etwas passieren. Wenn die Items nicht alle angezeigt werden können und man scrollen muss soll etwas anderes passieren.
Wie kann ich das realisieren?
Ich habe mit folgenden Codes gearbeitet:
Leider war in beiden Fällen der Wert listView.getHeigt jedes mal höher, auch wenn ich viele Items hatte und Scrollen musste. Ich habe es auch mit listview.getLayoutParams.Height probiert aber auch ohne ERfolg. Das ergab immer -1.
ich habe eine Listview. Jedes Item ist eine Checkbox, deren Text unterschiedlich lang ist. Mal 1 zeile mal 5 Zeilen.
Wenn die Listview alle Items anzeigen kann (und man nicht scrollen muss) soll etwas passieren. Wenn die Items nicht alle angezeigt werden können und man scrollen muss soll etwas anderes passieren.
Wie kann ich das realisieren?
Ich habe mit folgenden Codes gearbeitet:
Code:
int numberOfItems = listAdapter.getCount();
// Get total height of all items.
int totalItemsHeight = 0;
for (int itemPos = 0; itemPos < numberOfItems; itemPos++) {
View item = listAdapter.getView(itemPos, null, listView);
item.measure(0, 0);
totalItemsHeight += item.getMeasuredHeight();
}
// Get total height of all item dividers.
int totalDividersHeight = listView.getDividerHeight() *
(numberOfItems - 1);
// Get total height
int total = totalItemsHeight + totalDividersHeight;
if (total > listView.getHeight) {
// Code
}
Code:
ListAdapter listAdapter = listView.getAdapter();
int elemente = 0;
int desiredWidth = View.MeasureSpec.makeMeasureSpec(listView.getWidth(),
View.MeasureSpec.AT_MOST);
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
elemente += listItem.getMeasuredHeight();
}
elemente = elemente + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
if (elemente > listView.getHeight) {
// Code
}
Leider war in beiden Fällen der Wert listView.getHeigt jedes mal höher, auch wenn ich viele Items hatte und Scrollen musste. Ich habe es auch mit listview.getLayoutParams.Height probiert aber auch ohne ERfolg. Das ergab immer -1.