Динамически добавлять больше карт в список
Я работаю над приложением для Android TV уже довольно давно, и я далеко продвинулась, работая над ним. Я пытаюсь разработать приложение, как попкорн, но это для Google Nexus TV Box. Проблема, в которой я застрял, действительно проста, но даже после многих усилий я все еще не могу найти решение. Я получаю данные JSON из моей базы данных, которая содержит все детали фильма и ссылки, и это прекрасно работает. По всему виду приложения
Теперь те, кто использовал приложение you tube на Android TV, должны были заметить, что оно было построено на основе обратной связи, и когда вы прокручивали список вниз, в ряд добавлялось больше карт, и аналогично приложение выполняло вызовы json для получения большего количества данных в соответствии с категория, в которой мы прокручиваем. (это то, что я хочу сделать)
Сейчас это невозможно, если я запрашиваю большие данные, требуется много времени для извлечения всего с сервера, поэтому я разработал способ, которым я могу делать вызовы json при прокрутке, но я не могу представить их в списке во время выполнения,
2 ответа
Я работаю с библиотекой Leanback для Android TV с последних 7 или 8 месяцев. И я разработал свой собственный класс презентаторов, с помощью которого вы можете динамически загружать больше карточек при прокрутке, но это невозможно с помощью библиотеки Leanback, ListAdapter обновляет одну строку и затем перемещается в следующую категорию, чтобы обновить свои карточки. которые занимают время во время выполнения.
Я использовал ответ ниже, чтобы создать свой собственный класс докладчика. Хитрость при реализации бесконечной загрузки при прокрутке заключается в том, что вам нужно создать две AysncTasks.
Посмотрите на пост 34
Ленивая загрузка изображений в gridView
это займет немного времени, но вы получите идею.
Добавить элементы в докладчик;
CardPresenter channelCardPresenter = new CardPresenter();
ArrayObjectAdapter channelRowAdapter = new ArrayObjectAdapter(channelCardPresenter);
channelRowAdapter.add(new Movie("Movie Title"));
HeaderItem header = new HeaderItem(0, "My Channels");
mRowsAdapter.add(new ListRow(header, channelRowAdapter));
Конечно, это может работать только в первый раз, когда вы создаете пользовательский интерфейс. Будущие времена не могут сделать это. В моем приложении https://github.com/Fleker/CumulusTV/blob/master/app/src/main/java/com/felkertech/n/tv/LeanbackFragment.java я создаю метод, который будет вызываться каждый раз Я хочу сделать полную перерисовку приложения:
public void refreshUI() {
prepareBackgroundManager();
setupUIElements();
loadRows(); //Generate and populate all the rows
setupEventListeners();
}