我正在构建一个聊天室应用程序,每隔X秒轮询一次新事件.每次发生这种情况时,此代码都会使用新数据更新RoomAdapter(ArrayAdapter的自定义子类)并将其滚动到底部:
RoomAdapter adapter = (RoomAdapter) getListAdapter();
for (int i=0; i<newEvents.size(); i++)
adapter.add(newEvents.get(i));
getListView().setSelection(events.size()-1);
Run Code Online (Sandbox Code Playgroud)
这很好,除了如果用户向上滚动以浏览房间的历史记录,它将在轮询发生时将她跳到底部.我想要做的是,如果用户已经在列表的底部,那么在对新事件进行轮询之后,它就会停留在那里.如果用户有意向上滚动,我希望用户不要被打扰.
如何检测我何时已滚动到ListView的底部?
注意:我不能做getListView().getSelectedItemPosition(),因为正如文档所说,在触摸模式下调用setSelection实际上并没有选择项目,只是滚动到它.