Я пытался использовать 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 для меня?)
Как максимально эффективно достичь цели с помощью архитектурных компонентов?
Редактировать: также заметил, что компонент подкачки в данный момент находится в альфа-версии.