Как ограничить отображение элементов списка в ListView 10 и далее 10 после нажатия кнопки Далее
У меня есть listview с 100 элементами, и я хочу отобразить первые 10 элементов, и при нажатии кнопки "Далее" я должен отобразить следующий 10 ie.с 11 по 20, у меня есть код для получения первых 10 элементов
public int getCount() {
return 10;
}
но как получить следующие 10 элементов в покое и так далее. любая идея
2 ответов
один из способов сделать это,
1) Не заполняйте свой ArrayList всеми данными. Вместо этого держите их в отдельном ArrayList (al1
) и используйте ArrayList (al2
) с максимальными значениями 10 для использования с вашим BaseAdapter.
2) изначально
- al2 = al1[0] до al1[9]
- BaseAdatper (контекст, данные)
3) Держите BaseAdapter как есть, но измените
@Override
public int getCount() {
return 10;
}
to
@Override
public int getCount() {
return data.size();
}
это не обязательно, но это хорошая практика. Теперь вы будете показывать только 10 элементов, потому что это все, что вы передаете адаптеру. Также напишите общедоступную функцию в расширенном классе BaseAdatper, чтобы установить data
переменной.
4) на следующей кнопке нажмите событие получить следующие 10 пунктов из al1
и назначить al2
. Используйте публичную функцию, которую вы написали, чтобы написать data
С al2
.
5) BaseAdapter имеет метод, называемый notifyDataSetChanged , это назвать. Это означает, что адаптер должен обновляться сверху вниз. Так как у вас есть data
перезаписана новыми данными, когда обновление происходит, вы будете видеть новые данные. Вот и все.
Я не думаю, что вам будет трудно придумать способ отслеживать, из какого индекса в al1
вы показывать. :)
Если у вас есть 100 элементов, то просто возьмите первые 10 элементов для адаптера, и когда пользователь нажимает next, получите следующие 10 и так далее.
EDIT: по запросу кода я могу предоставить простой пример о том, как сделать разбиение на страницы.
int totalItems = 100;
int currentPage = 0;
int pageSize = 10;
int numPages = (int) Math.ceil((float) totalItems/pageSize);
ArrayList<String> items = new ArrayList<String>(totalItems);
List<String> page = items.subList(currentPage, pageSize);
глядя на приведенный выше пример, учитывая количество элементов и желаемый размер страницы, вы можете рассчитать, сколько страниц вам нужно отобразить, затем вы можете выбрать вложенный список из своего ArrayList. Каждый раз, когда пользователь нажимает далее, увеличьте currentPage и обновите адаптер с помощью нового списка sub.