Отображение диалогов, макетов и фильтрация данных в MVVM - PullRequest
0 голосов
/ 02 марта 2020

Я начал свое приключение с архитектуры MVVM и столкнулся с несколькими ситуациями, когда я не могу найти определенный ответ.

  1. Показать, например, AlertDialog. В настоящее время я отображаю AlertDialog из действия (представления), потому что ViewModel не должен содержать никаких ссылок на представление. Правильный ли это механизм?

  2. Недавно я делал приложение, в котором я получал все задания из базы данных. Задачи были разделены на 3 категории, и мне нужно было поместить задачи из каждой категории в отдельный список. Я сделал это следующим образом в упражнении (представление):

    viewModelMainActivity = new ViewModelProvider(this).get(ViewModelMainActivity.class);
    viewModelMainActivity.getAllTasks().observe(this, new Observer<List<Task>>() {
        @Override
        public void onChanged(List<Task> tasks) {
    
            List<Task> allJobTasks = new ArrayList<>();
            List<Task> allShoppingTasks = new ArrayList<>();
            List<Task> allOtherTasks = new ArrayList<>();
    
            for(int i = 0; i < tasks.size(); i ++) {
    
                String category = tasks.get(i).getCategory();
    
                switch (category) {
                    case JOB_CATEGORY:
                        allJobTasks.add(tasks.get(i));
                        break;
    
                    case SHOPPING_CATEGORY:
                        allShoppingTasks.add(tasks.get(i));
                        break;
    
                    case OTHER_CATEGORY:
                        allOtherTasks.add(tasks.get(i));
                        break;
    
                }
            }
    
            taskAdapter.setAllJobTasks(allJobTasks);
            taskAdapter.setAllShoppingTasks(allShoppingTasks);
            taskAdapter.setAllOtherTasks(allOtherTasks);
    
            showOrHideImageAndText(allJobTasks, JOB_CATEGORY);
            showOrHideImageAndText(allShoppingTasks, SHOPPING_CATEGORY);
            showOrHideImageAndText(allOtherTasks, OTHER_CATEGORY);
    
            taskAdapter.setCurrentTasks(currentCategory);
    
        }
    });
    

Это правильный путь? Я так не думаю, но как еще я могу фильтровать данные по категориям?

1 Ответ

0 голосов
/ 02 марта 2020

Ответ на оба вопроса

1.- Это правильно, что вы делаете это в упражнении, потому что в противном случае вам пришлось бы отправить ссылку на упражнение для модели представления

2.- Как Я могу предположить, что в вашем коде вы используете эти списки позже, чтобы заполнить представление, правильнее было бы сделать заполнение списков в модели представления перед возвратом ответа на действие, но не с таким большим логом c как управление информацией, я не вижу в этом необходимости на 100%, поэтому нормально делать это в упражнении

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