当滚动位于屏幕底部时,我正在尝试进行ListView
更新,我几乎已将其设置为有效但滚动仍然存在轻微问题。
首先,我的代码是检测ListView
的lastItem,
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
currentFirstVisibleItem = firstVisibleItem;
currentVisibleItemCount = visibleItemCount;
ttc = totalItemCount;
// check if the current item is last,
if (currentFirstVisibleItem+currentVisibleItemCount == ttc){
Log.e("ss","I am here");
if (totalTime == timeConsumed){
Log.e("Last","Last");
// add data on listView
// update listView
notifyDataSetChanged();
}
}
}
当我执行应用时,我会一直滚动到底部,以便if (currentFirstVisibleItem+currentVisibleItemCount == ttc)
条件成为现实,并且因为我收到了Log.e
I am here
上的消息而正常工作。< / p>
此时,我已经处于屏幕底部并等待
if (totalTime == timeConsumed)
阻止执行,将在5秒后执行。一旦if (totalTime == timeConsumed)
块被执行,我就会收到日志消息Log.e("Last","Last");
,因为我已经位于ListView
的底部,但问题是,notifyDataSetChanged
未执行自动发生,虽然我已经在ListView
的底部,为了执行notifyDataSetChanged()
,我必须触摸屏幕,然后才会执行。
执行notifyDataSetChanged()
时,为什么Log.e("Last","Last");
未执行?即使我已经在屏幕的底部?为什么我必须触摸屏幕才能执行notifyDataSetChanged()
?
答案 0 :(得分:0)
您是否考虑过在适配器中处理此功能?在getView
中,您可以检查该位置是否是最后一个数据项,并启动异步调用以加载另一页数据。