我正在构建一个聊天室应用程序,其中每 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);
这很好,除了如果用户向上滚动浏览房间的历史记录,当民意调查发生时,它会将她跳到底部。我想做的是拥有它,这样如果用户已经在列表的底部,它会在对新事件进行民意调查后停留在那里。如果用户故意向上滚动,我希望用户不要被打扰。
如何检测我何时已经滚动到 ListView 的底部?
注意:我不能做 getListView().getSelectedItemPosition(),因为正如文档注释,在触摸模式下调用 setSelection 实际上并没有选择项目,只是滚动到它。