我正在尝试为自定义ListView
实现一些逻辑。在其OnTouchListener
的{{1}}方法中,我会检查是否符合某些条件,如果是,请向上/向下滚动onTouch()
,具体取决于用户手指的移动方向。现在,当我向下滚动ListView
以显示底部的新项目时,这些项目不会显示。我每次拨打ListView
时都试图拨打ArrayAdapter.notifyDataSetChanged()
,但这不起作用。我也搜索了这个问题,但我找不到可靠的解决方案/解释。
以下是一些代码示例:
scrollTo()
答案 0 :(得分:1)
请尝试在notifyDataSetChanged之后执行scrollTo等待一秒。
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
listView.scrollTo(0, (int) -deltaY);
}
}, 300)
答案 1 :(得分:1)
您可以使用 scrollListBy 代替 scrollTo 。但是使用它有一个限制,你只能在 KitKat 版本之上或之上使用它。像这样使用它: -
listView.post(new Runnable() {
@Override
public void run() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
listView.scrollListBy((int) -deltaY);
}
}
});