Created
August 12, 2016 13:58
-
-
Save AhmadVatani/7a084341a50046c80466e2a819297e27 to your computer and use it in GitHub Desktop.
Sets ListView height dynamically based on the height of the items.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Sets ListView height dynamically based on the height of the items. | |
* | |
* @param listView to be resized | |
* @return true if the listView is successfully resized, false otherwise | |
*/ | |
public static boolean setListViewHeightBasedOnItems(ListView listView) { | |
ListAdapter listAdapter = listView.getAdapter(); | |
if (listAdapter != null) { | |
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); | |
// Set list height. | |
ViewGroup.LayoutParams params = listView.getLayoutParams(); | |
params.height = totalItemsHeight + totalDividersHeight; | |
listView.setLayoutParams(params); | |
listView.requestLayout(); | |
return true; | |
} else { | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment