Передача параметра во вьюмодель
RecyclerView recycler_view = findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
hoursAdapter = new HoursAdapter(hoursArrayList);
hoursViewModel = new ViewModelProvider(this).get(HoursViewModel.class);
}
public void click(View view){
getDates("1");
}
Подскажите,как передать параметр в hoursViewModel? Именно при клике.Пробовал через фабрику, ни в какую при клике не хочет
Ответы (2 шт):
Автор решения: iramm
→ Ссылка
Во ViewModel нужно создать поле, хранящее параметр. И обращаться к нему нужно через методы ViewModel. Что-то вроде:
public HoursViewModel extends ViewModel {
private int parameter;
public void setParameter(int p) {
this.parameter = p;
}
public int getParameter() {
return parameter;}
}
А по клику нужно вызвать метод: hoursViewModel.setParameter(1);
Автор решения: Олег Никифоров
→ Ссылка
Через фабрику получилось.Видимо изначально где то ошибка была.
public class LoginEmailModelFactory extends ViewModelProvider.NewInstanceFactory{
private final String param;
public LoginEmailModelFactory(String param) throws Exception {
super();
this.login = param;
}
@NonNull
@Override
public <T extends ViewModel> T create(Class<T> modelClass) {
if (modelClass == LoginEmailViewModel.class) {
try {
return (T) new LoginEmailViewModel(param);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return null;
}
}