Используйте LiveData с RecyclerView

Я пытался использовать RecyclerView с LiveData в основном точно так же, как описано в этом вопросе Это действительно то, что я пытаюсь сделать, и я думаю, что это вполне нормальный вариант использования. (Есть также этот вопрос, который несколько совпадает с моим)

Цель: обеспечить распространение обновления в таблице в RoomDB с помощью LiveData, чтобы оно отображалось как элементы в RecyclerView.

Я прочитал библиотеку подкачки, и она кажется очень хорошей, но скажу Мне не нужно разбивать на страницы для производительности. не совсем все понял, в той статье

Вот код из статьи, к которой у меня есть комментарий, который может иметь отношение к моему вопросу:

class MyActivity extends AppCompatActivity {
    @Override
    public void onCreate(Bundle savedState) {
        super.onCreate(savedState);
        MyViewModel viewModel = ViewModelProviders.of(this).get(MyViewModel.class);
        RecyclerView recyclerView = findViewById(R.id.user_list);
        UserAdapter<User> adapter = new UserAdapter();

        //Does the following line mean that they set the list on the adapter on each change in the underlying data?
        viewModel.usersList.observe(this, pagedList -> adapter.setList(pagedList));
        recyclerView.setAdapter(adapter);
    }
}

В observe они просто устанавливают список для адаптера, в текущей настройке у меня есть notifyDataSetChanged() (как в связанном вопросе), что, как я понимаю, плохо. Я не использую DiffUtil. Я получаю бесплатно в PagedListAdapter, что мне нравится. Я бы не стал просто задавать список адаптера в observe, мне кажется, что именно это заставляет PagedListAdapter делать тяжелую работу.

Если я не хочу использовать пейджинг, должен ли я по-прежнему использовать компоненты пейджинга? (чтобы заставить его делать вещи DiffUtil для меня?)

Как максимально эффективно достичь цели с помощью архитектурных компонентов?

Редактировать: также заметил, что компонент подкачки в данный момент находится в альфа-версии.


person Adam    schedule 29.11.2017    source источник
comment
Я действительно жду правильного ответа на проблему, но даже год спустя реального решения нет, поэтому единственным решением является использование diffUtil и вызов notifyChange.   -  person firstthumb    schedule 24.08.2018
comment
Есть новости по этому поводу?   -  person Kartik Garasia    schedule 24.02.2020