Как ограничить отображение элементов списка в 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.