Android 动态列表项高度

Android 动态列表项高度,android,listview,listitem,Android,Listview,Listitem,如何以编程方式设置ListItems的高度和/或如何以编程方式创建ListItems?我目前正在使用带有自定义适配器的自定义ListItem.xml,但是ListItems只有固定的高度。这会产生大量未使用的空间,因为ListItems没有相同的内容。 有解决此问题的方法吗?您应该使用自定义数组适配器,并且根据项目的内容,您可以更改itemView的高度。你可以在谷歌上找到一些例子 在arrayAdapter中,您可以检查是否存在字段,并将此“field view”高度设置为0,例如,或vi

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

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

在arrayAdapter中,您可以检查是否存在字段,并将此“field view”高度设置为0,例如,或view.INVISIBLE

我编辑了更详细的版本:

在适配器中有:
getView(int位置、视图转换视图、视图组父级)

您可以根据需要修改
convertView
以指定更多或更少的高度。如果你不发布一些代码,我会非常抱歉。

试试这个:

 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();
int totalHeight=0;
int desiredWidth=MeasureSpec.makeMeasureSpec(listView.getWidth(),最多测量一次);
对于(int i=0;i
请看这个链接,这将对您有所帮助

请发布一些代码……您的示例也使用ListItem.xml,但这对我没有帮助。正如我所说,我的ListItems的内容是不同的,因此我需要一个解决方案以编程方式设置高度。