2015-07-21 65 views
0

我必须在scrollView里面使用listView,由于某些原因,我无法为addFooter使用addHeader。android-ListView里面scrollView不能正常工作

当我将适配器设置为我的listView时,我改变它的高度,但它不能正常工作。

这是我的代码:

lv.setAdapter(ladap); 
        int totalHeight = 0; 
        for (int size = 0; size < ladap.getCount(); size++) { 
         View listItem = ladap.getView(size, null, lv); 
         listItem.measure(0, 0); 
         totalHeight += listItem.getMeasuredHeight(); 
        } 
        ViewGroup.LayoutParams params = lv.getLayoutParams(); 
        params.height = totalHeight + (lv.getDividerHeight() * (ladap.getCount() - 1)); 
        lv.setLayoutParams(params); 
        lv.requestLayout(); 

这是结果:

enter image description here

,你可以看到,该列表视图完成在页面的中间,但它仍然滚动很多。

如何使之正确?

+2

不使用滚动视图内的列表,列表视图具有滚动构建。此外,尝试用recyclerview替换列表视图以获得更好的性能 – 3xplore

回答

2

您不需要使用带有ListView的ScrollView。如Android Dev docs中所述:

您绝对不应该将ScrollView与ListView一起使用,因为ListView负责处理自己的垂直滚动。最重要的是,这样做会挫败ListView中用于处理大型列表的所有重要优化,因为它有效地强制ListView显示其整个项目列表以填充由ScrollView提供的无限容器。