Подскажите пожалуйста только изучаю андроид. Я так понял, если говорить проще ViewModel нужна, что бы восстановить инфу во время работы с приложением к примеру во время поворота экрана, но что делает Factory который мы расширяем из extends ViewModelProvider.NewInstanceFactory?
Допустим вы хотите передать во ViewModel какой-то аргумент, например, строку. С помощью обычного способа через конструктор у вас не получится, так как вы должны получать ViewModel вот так.
MyViewModel myViewModel = ViewModelProvider.of(this).get(MyViewModel.class);
Чтобы передать аргумент нужно использовать фабрику. Например, вот так. Создаем экземпляр фабрики и через конструктор передаем наше значение name.
public class ModelFactory extends ViewModelProvider.NewInstanceFactory {
private String name;
public ModelFactory(String name) {
super();
this.name = name;
}
@NonNull
@Override
public <T extends ViewModel> T create(@NonNull Class<T> modelClass) {
if (modelClass == MyViewModel.class) {
return (T) new MyViewModel(name);
}
return null;
}
}
Теперь мы можем создать ViewModel и передать в нее параметр. Делается это вот так
MyViewModel model = ViewModelProviders.of(this, new ModelFactory("Android")).get(MyViewModel.class);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Необходимо отфильтровать список пользователей по списку параметров, пример