Android MVVM, который должен читать и хранить пакет - PullRequest
0 голосов
/ 28 октября 2019

У меня есть простое действие с парой текста и изображения, я получаю данные для этих элементов представления вместе с пакетом при создании действия. Теперь я пытаюсь изменить архитектуру на MVVM, и мне было интересно, как и где хранить информацию о пакете?

Для того, что я читал, данные должны быть на уровне "модели", но яуже есть данные в комплекте, я должен создать модель и хранить данные там или в ViewModel?

Моя ViewModel выглядит следующим образом:

public class SimpleInfoViewModel extends ViewModel {

    private Context context;

    public SimpleInfoViewModel(Context context) {
        this.context = context;
    }

}

И мой взгляд:

public class SimpleInfoActivity extends AppCompatActivity {

    private SimpleInfoViewModel viewModel;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        getViewBundledInfo();

        initViewModel();
    }

    private void getViewBundledInfo() {
        final Bundle extras = getIntent().getExtras();
        if (extras != null) {
            title = extras.getString("title");
        }
    }

    private void initViewModel() {
        SimpleInfoViewModel viewModel = new SimpleInfoViewModel(this);
    }

1 Ответ

0 голосов
/ 29 октября 2019

Вам необходимо создать класс с именем SimpleInfoViewModelFactory extends ViewModelProviders.Factory.

SimpleInfoViewModelFactory(String title) extends ViewModelProviders.Factory {.. copy paste codr from document.. .}

Способ создания вашей ViewModel внутри действия совершенно неправильный

SimpleInfoViewModelFactory vmf = SimpleInfoViewModelFactory(bundle.extras.title)
SimpleInfoViewModel vm = VieeModelProvders.of(this,vmf).get(SimpleInfoViewModel.class)

Это создает ViewModel, как сейчас, но вы используете его, чтобы иметь инициализированные значения. Вы можете увидеть на документах. Это очень просто

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...