在Android中具有大量数据的ListView的动态高度

时间:2015-03-27 21:08:43

标签: android listview dynamic height

我正在开发一个显示图像的程序。 enter image description here

这是一个包含在ScrollView中的ListView和GridView。 该程序的工作原理如下:当您单击GridView项目时,所选项目将添加到ListView,因此可以将多个项目添加到ListView中。因此,可以滚动ScrollView的全部内容。一切正常,直到ListView包含大量数据,在这种情况下,新ListView的添加和渲染将显着减慢。因此,我想问一下是否有人处理类似的问题,并且知道更好的方法来调整大小和重绘整个ListView。

目前我执行计算并调整ListView的大小,如下所示:

public ListUtils(ListView listView){
    ListAdapter adapter = listView.getAdapter();

    int count = adapter.getCount();
    int itemsHeight;    

    View oneChild = listView.getChildAt(0);
    if( oneChild == null){
        return;
    }

    itemsHeight = oneChild.getHeight();

    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)listView.getLayoutParams();
    params.height = (itemsHeight * count);
    listView.setLayoutParams(params);
}

1 个答案:

答案 0 :(得分:1)

如果您在使用ListView时遇到性能问题,我建议您切换到RecyclerView并使用自定义RecyclerView.Adapter。看看herehere