Перевернутый ListView в Android?
есть ли простой способ отобразить ListView в обратном порядке? Я пытаюсь создать приложение на основе разговора и хотел бы, чтобы самые последние записи были внизу ListView. Я знаю о transcriptMode и stackFromBottom, однако моя проблема заключается в порядке данных.
скажем, у меня есть 100 элементов разговора и хотите отобразить элементы 80-100, причем 100 является самым последним элементом разговора. Я хотел бы показать 80-100, что подразумевает заказ по ID desc LIMIT 20 в моем запросе, который заставляет элементы сортироваться от 100 до 80, противоположно тому, что мне нужно. В настоящее время у меня есть неприятный внутренний код запроса, но я чувствую, что должно быть более простое решение, основанное на реверсировании курсора или просто инвертировании ListView.
4 ответов
внутри baseAdapter
на getView()
метод, вместо того , чтобы получать элемент в данных в индексе "позиция", используйте противоположное, что означает : numberOfItems минус позиция .
что касается отображения количества элементов, это также внутри baseAdapter: установите значение, возвращаемое getCount()
быть тем,кем вы хотите, чтобы он был (20 в вашем примере, хотя 80-100 подразумевает, что он должен быть 21 ) .
кстати, кажется, вы являетесь стартером в случае управления ListView . могу я предложить посмотреть это видео: http://www.youtube.com/watch?v=wDBM6wVEO70
также проверьте api-демо, предоставляемые менеджером sdk . у них там много примеров.
использовать метод getitem метод внутри вашего адаптера для обратном порядке:
@Override
public Object getItem(int position) {
return super.getItem(super.getCount() - position - 1);
}
этот код работает для меня при извлечении данных из базы данных.
cs.moveToPosition(super.getCount() - position - 1); //cs is Cursor