Я создаю приложение для чата, где новые события опрашиваются каждые 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, когда в сенсорном режиме фактически не выбирает элемент, просто прокручивает его.