Intereting Posts
Как добавить новый источник с помощью gradle kotlin-dsl Почему диапазон повторного использования Dagger медленнее, чем Singleton? Как представлять несколько типов (типы объединения) при настройке JavaScript перейти к объявлению в приложении create-react-kotlin-app не работает Выделение синтаксиса для файлов сценариев Kotlin в Idea Как показать голландский месяц с использованием Joda DateTime Набор членов класса (значение) вызывается рекурсивно … почему? Как я могу вызвать collect (Collectors.toList ()) в потоке Java 8 в Котлине? Попытка мигрировать на канарейку 5 Как вернуться из функции функции Котлина Двумерный массив Int в Котлине Каков правильный способ использования сравнения «больше чем», «меньше» по сравнению с целыми числами с нулевым значением в Котлине? Что такое эквивалент Kotlin для Java Stream.collect? Как преобразовать intArray в ArrayList <Int> в Котлин? Как вызвать внешнюю команду из кода Котлина?

Обновление представления Recycler и создание Parcelables для вращения экрана (что здесь лучше всего подходит?)

Я пытался узнать Котлина медленно в течение двух месяцев. Я сделал приложение Reddit в Kotlin для отображения миниатюр в Recycler View Grid Layout

Контекстуализация моей ситуации

В методе apiCall в MainActivity я вызываю RedditAPI где я использую RedditAPI для создания сетевого вызова и возвращаю Observable соответствии с ResultValue object ResultValue Затем я извлекаю объект в MainActivity и я показываю его в представлении Recycler View , который отлично работает.

Но когда я реализовал бесконечный прокрутки и появлялись новые объекты, сгенерированные каждый раз, когда вы прокручиваете вниз, мне приходилось добавлять все значения в mutable list cumulativeValue , изменять структуру моего адаптера и просто вызывать adapter.notifydatasetchange() на прокрутке, также работал вне.

 private val cumulativeValues = mutableListOf<ResultValues.RedditChildrenResponse>() 

затем позже на onscrolllistener

 redditAPI.callParameters(location, page, address.queryLimit, afterValue) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe( { result -> cumulativeValues.addAll(result.data.children.toMutableList()) 

Мой код работает, но я хочу реализовать поворот экрана, и теперь я не знаю, могу ли я сделать это с помощью parcelables, поскольку я добавил все значения, полученные из сетевого вызова, в измененный список

Я использовал плагин kotlin для реализации parcelable для класса RedditChildrenResponse которого в качестве параметра есть другой класс RedditChildrenDetails , я также применил его для этого класса (в той же ссылке).

class RedditChildrenResponse(val data: RedditChildrenDetails) : Parcelable { ...

 class RedditChildrenDetails( val url: String, val title: String, val thumbnail: String, val permalink: String, val subreddit: String ) : Parcelable { ... 

Теперь у меня есть возможность для этих двух классов, но все мои значения хранятся в изменчивом списке cumulativeValues который я генерирую в MainActivity и я не вижу, как я могу подключить изменяемые значения списка к полученным мной дополнениям.

Мой вопрос: есть ли лучший способ добавить данные в представление Recycler View а не добавлять все в mutable list чтобы я мог справиться с этим проще при повороте экрана? Должен ли я использовать parcelables для сохранения состояния экземпляра? Все мои значения находятся в изменчивом списке, если бы я мог хранить его в пакете, но я бы не стал putMutableList (), как мне это сделать?