Я работаю над приложением Android TV уже довольно давно, и я очень далеко работаю над этим. Я пытаюсь разработать приложение, такое как время попкорна, но это для Google Nexus TV box. Проблема, в которой я застрял, действительно проста, но даже после многих усилий я все еще не могу понять решение. Я извлекаю данные json из моей базы данных, в которой есть все детали и ссылки на фильмы, и это работает отлично. над всем видом приложения
Теперь те, кто использовал ваше приложение для трубки на Android-телевизоре, должны были заметить, что он был построен на понижающем потоке, а когда вы прокручиваете список в списке, в строку добавляются больше карт, а также приложение вызывало вызовы json для получения большего количества данные в соответствии с категорией, в которой мы прокручиваемся. (что я хочу делать)
В настоящее время невозможно, если я запрашиваю большие данные, требуется много времени, чтобы получить все с сервера, поэтому я разработал способ, с помощью которого я могу выполнять вызовы json для прокрутки, но я не могу представить их в listrow во время выполнения.
Я работаю с библиотекой Leanback в Android от 7 до 8 месяцев. И я разработал свой собственный класс презентаторов, благодаря которому вы можете загружать больше карт динамически по прокрутке, но его невозможно использовать с помощью библиотеки Leanback Library, ListAdapter обновляет одну строку и переместится в следующую категорию, чтобы обновить ее. которые занимают время во время выполнения.
Я использовал приведенный ниже ответ, чтобы создать свой собственный класс презентатора. "Трюк" при осуществлении бесконечной загрузки прокрутки состоит в том, что вам нужно создать две AysncTasks.
Взгляните на сообщение 34
Lazy загружает изображения в 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();
}