Сценарий У меня есть Spinner и RecyclerView. У счетчика есть три различных варианта: VIP-пользователи , Новые пользователи , Пользователи с высокими показателями . В myViewModel
private liveData<ArrayList<User>> userList;
public void init(int position){
switch (position){
case 0:
userList = myRepo.getInstance().getVipUser();
break;
case 1:
userList = myRepo.getInstance().getNewUser();
break;
case 2:
userList = myRepo.getInstance().getHScoreUser();
break;
}}
public LiveData<ArrayList<User>> getUserList(){return userList;}
И в myFragment
spinner.setOnItemSelectedListener(this);
public void onItemSelected(AdapterView<?> parent, View view, int pos,long id) {
myViewModel.getUserList().removeObserver(getViewLifeCycleOwner ());
myViewModel.init(pos);
myViewModel.getUserList().observe(getViewLifeCycleOwner(),
userList->{
//Attach userList to RecyclerView
}
}
Все прошло нормально. Но когда я выбираю другие варианты на Spinner. Пример, когда я меняю VIP-пользователь на High Score User , livdata также учитывает старые данные. Если user1,2,3 являются VIP-пользователями, а user4,5 - пользователями с высоким рейтингом, все 5 пользователей отображаются в разделе «Пользователи с высоким рейтингом» вместо отображения только user4,5.
Итак, я хочу удалить предыдущие данные из liveata при изменении выбора прядильщика. Есть ли способ выполнить sh это?