Динамически добавлять больше карт в список

Я работаю над приложением для 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();
}
Другие вопросы по тегам