动态ListItem高度

时间:2013-02-14 12:15:50

标签: android listview listitem

如何以编程方式设置ListItem的高度和/或如何以编程方式创建ListItem?我目前正在使用自定义ListItem.xml和自定义适配器,但ListItems只有一个固定的高度。这会产生大量未使用的空间,因为ListItems没有相同的内容。 有没有解决这个问题的方法?

2 个答案:

答案 0 :(得分:0)

您应该使用自定义数组适配器,并根据项目的内容,您可以更改itemView的高度。你可以在谷歌找到一些例子。

http://sogacity.com/how-to-make-a-custom-arrayadapter-for-listview/

http://devtut.wordpress.com/2011/06/09/custom-arrayadapter-for-a-listview-android/

在arrayAdapter中,您可以检查是否有字段,并设置此“字段视图”高度= 0,例如,或View.INVISIBLE。

我为更具说明性的版本进行了编辑:

在您的适配器中,您有:getView(int position, View convertView, ViewGroup parent)

您可以根据需要修改convertView以指定更高或更低的高度。如果你不发布一些代码我不能帮助更多抱歉。

答案 1 :(得分:0)

试试这个:

 int totalHeight = 0;
    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),    MeasureSpec.AT_MOST);
    for (int i = 0; i < listAdapter.getCount(); i++) {
        View listItem = listAdapter.getView(i, null, listView);
        listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
        totalHeight += listItem.getMeasuredHeight();
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight + (listView.getDividerHeight() *  (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
    listView.requestLayout();

看到此链接,这将对您有所帮助 http://kk-brothers.blogspot.in/2011/09/dynamically-change-listview-height.html