Я начинающий программист и пытаюсь разработать приложение для Android с использованием MVVM и новейших компонентов Jetpack (в данном случае это относится к Room: Navigation и LiveData)
У меня есть база данных пользователей, созданная с помощью Room, и в одном из моих фрагментов я должен отобразить список этих пользователей, но не всех, только тех, которые имеют определенный идентификатор. В зависимости от того, где я запускаю этот фрагмент в приложении, этот список изменяется (отображаются разные пользователи)
Каждый раз, когда я возвращаюсь к этому фрагменту, он воссоздается (насколько я понимаю, именно так работает Navigation), но у меня возникает проблема с выяснением того, как избежать этого «пользовательского» списка пользователей от перезагрузки данных из базы данных каждый раз, когда я создайте представление, поскольку в противном случае RecyclerView, который содержит этот список, мигает в течение доли секунды, пока приложение обращается к БД.
Это то, что я пытался сделать в моей Viewmodel (это явно неправильно, но, возможно, это поможет вам понять, что я пытаюсь сделать)
public class UserViewModel extends AndroidViewModel {
private LiveData<List<User>> customUserList;
private UserRepository mUserRepository;
public LiveData<List<User>> getUsersForGroup(int groupId) {
if(customUserList != null){
return customUserList;
} else {
customUserList = mUserRepository.getUsersForGroup(groupId);
return customUserList;
}
}
Я могу подумать о некоторых "хакерских" способах сделать это, но должен быть правильный способ сделать это.
Должен ли я использовать в этом случае ViewModelFactory? И если это так, как я могу это реализовать? Я не мог найти много информации об этом, и то, что я нашел, написано на Kotlin.
Какой правильный подход?
Спасибо.