检测自定义适配器中的更改,从视图模型到更新列表视图的 LiveData

问题描述

我有一个调用片段的活动,我从该片段收集添加到存储在视图模型中的哈希映射的输入,在父活动中,我有一个列表视图,当观察者检测到视图模型中实时数据的更改。我有一个自定义适配器,它从视图模型中获取哈希映射,并将在列表视图中正确显示哈希映射,但仅当我退出并返回到活动的实例时

列表没有更新,但哈希映射正在视图模型中填充。我可能使用了视图模型或观察者错误,但我迷路了,谷歌指南含糊不清,我仍在学习 Android。欢迎提出任何建议。

查看模型

    private mutablelivedata<HashMap<String,Double>>taskListVM;

    public LiveData<HashMap<String,Double>> getTasks(){
        if(taskListVM == null){
            taskListVM = new mutablelivedata<HashMap<String,Double>>();
        }
        return taskListVM;
    }

    public void setTasks(HashMap<String,Double> task){
        taskListVM.setValue(task);
        Log.d("Test","Myviewmodel,setTasks to HashMap" + taskListVM);
    }


父活动调用观察者


        //Testing view model
        viewmodel = new viewmodelProvider(this).get(Myviewmodel.class);

        //display tasks that have been created for this room
        final Observer<HashMap<String,Double>> terror = new Observer<HashMap<String,Double>>() {
            @Override
            public void onChanged(HashMap<String,Double> stringDoubleHashMap) {
                Map<String,Object> transformMap = new HashMap<String,Object>(stringDoubleHashMap);
                ListView taskList = findViewById(R.id.listView);
                adapter = new myAdapter(transformMap);
                taskList.setAdapter(adapter);
            }
        };
            viewmodel.getTasks().observe(this,terror);

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...