gpt4 book ai didi

java - 在 MVVM 中显示对话框、布局和数据过滤

转载 作者:行者123 更新时间:2023-12-01 18:09:44 26 4
gpt4 key购买 nike

我从 MVVM 架构开始我的冒险,并遇到了几种无法找到明确答案的情况。

  1. 显示例如 AlertDialog。我当前正在从 Activity ( View )显示 AlertDialog,因为 ViewModel 不应保留对该 View 的任何引用。这是正确的机制吗?

  2. 最近,我正在制作一个应用程序,其中我从数据库获取所有任务。任务分为 3 类,我需要将每个类别的任务放在单独的列表中。我在 Activity ( View )中做了如下操作:

    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.- 在 Activity 中执行此操作是正确的,因为否则您必须将 Activity 引用发送到 View 模型

2.- 正如我在您的代码中假设的那样,您稍后使用这些列表来填充 View ,正确的做法是在将响应返回到 Activity 之前填充 View 模型中的列表,但不是作为信息管理这样一个沉重的逻辑,我认为它不是 100% 必要的,所以在 Activity 中完成它是可以的

关于java - 在 MVVM 中显示对话框、布局和数据过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60489683/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com