Java 获取listview单元格的高度以便于向上滚动
具有listview的活动存在一个问题,即listview在每个单元格中的内容量不同。当用户向下滚动时,listview是平滑的,事情按预期进行。但是,当用户向上滚动时,会重新加载listview的缓存数据。此重画使listview向上滚动时出现跳跃。我得出的结论是,如果我在向下滚动时计算每个单元格的高度,并将其保存在ArrayList中,当用户向上滚动可见的listitem时应用相同的高度,那么跳跃的滚动就可以修复。我已经通过为每个帖子设置一个静态高度来测试了这一点,滚动条没有跳动。但是,我必须根据每个单元格的高度使其动态。listview代码看起来可能有点复杂 活动:Java 获取listview单元格的高度以便于向上滚动,java,android,listview,Java,Android,Listview,具有listview的活动存在一个问题,即listview在每个单元格中的内容量不同。当用户向下滚动时,listview是平滑的,事情按预期进行。但是,当用户向上滚动时,会重新加载listview的缓存数据。此重画使listview向上滚动时出现跳跃。我得出的结论是,如果我在向下滚动时计算每个单元格的高度,并将其保存在ArrayList中,当用户向上滚动可见的listitem时应用相同的高度,那么跳跃的滚动就可以修复。我已经通过为每个帖子设置一个静态高度来测试了这一点,滚动条没有跳动。但是,我必
在LazyObjectDrawingAdapter中,始终返回0。因此,查询元素会导致空指针异常。如何获取高度值?在getItemId中,应该返回位置而不是零
@Override
public long getItemId(int position) {
return 0;
}
应该是:
@Override
public long getItemId(int position) {
return position;
}
我想这可能会有帮助。这有助于获得每个单元格的高度吗?
public class ArrayListGetterSetter {
ArrayList<Integer> heightList = new ArrayList<Integer>();
int valueFromList;
int size;
public int getListValues(int itemIndex) {
valueFromList = heightList.get(itemIndex);
return valueFromList;
}
public void setList(int value) {
heightList.add(value);
}
public int getSize(){
size = heightList.size();
return size;
}
}
ArrayListGetterSetter test = new ArrayListGetterSetter();
Log.e("test.getSize()", ""+test.getSize());
@Override
public long getItemId(int position) {
return 0;
}
@Override
public long getItemId(int position) {
return position;
}