当前位置: 首页 > 知识库问答 >
问题:

如何因livedata中的更改而更改recyclerview行的格式?

张淳
2023-03-14

我有一个标准的应用程序设置(活动、视图模型、存储库)。该活动包含一个RecyclerView。RecyclerView有一个适配器。在我的活动中,我通过观察LiveData对象来更新RecyclerView:

 mQuizViewModel.getCurrentQuizTask().observe(this, new Observer<QuizTask>() {
            @Override
            public void onChanged(QuizTask quizTask){
                adapter.setAnswers(quizTask.getAnswers());
                }
        });

如果用户点击我的RecyclerView中的任何项目,quizTask将被更改,并将触发一个onChanged事件。根据用户点击的项目,我想更改RecyclerView中一些项目的字体颜色。为此,我需要引用活动中上述观察方法中的每一行。我怎样才能解决这个问题?

共有1个答案

谭池暝
2023-03-14

我很容易就解决了这个问题。我在适配器的onBindViewHolder方法中更改颜色。我在对象类中添加了一个字段,该字段通过

adapter.setData(DataToPass)

在onBindViewHolder方法中,我使用DataToPass中包装的附加信息检查是否满足了更改文本颜色的条件。

 类似资料:
  • 我正在使用Android MVVM架构和LiveData。我有一个这样的物体 我的视图模型是这样的 如何确保用户对象中的某个字段发生更改时,观察员收到通知?顺便说一句,重要的是要将这些数据保存在单独的对象中,而不是在ViewModel中使用字符串等主要值。

  • 问题内容: 我需要使用Java更改日期格式 问题答案: 如何使用从一种日期格式转换为另一种日期格式:

  • RecycerView只显示创建时ArrayList(适配器的数据)中的项。我所有添加更多行的尝试似乎都奏效了,但列表仍然是初始数据。它不是重复的,因为我尝试了谷歌上找到的所有建议。我已经做了什么: Adapter.NotifyDataSetChanged(); Adapter.NotifyItemChanged(5); recyleList.invalidate(); recyclelist.s

  • 假设的例子 假设如下... 我的LiveData类如下所示: 同样,这不是真的很低效吗,因为它会在recyclerView.adapter中触发完全刷新吗?

  • 我尝试使用谷歌图表,谷歌图表中的数据格式像 打印时间输出为: 问题是我不知道如何添加'new Date()',并将Date放入括号中不加引号。有什么想法吗??提前谢谢!

  • 我试图找到一个解决方案,如何将存储在数据库中的日期时间转换为yyyyy-mm-dd HH-mm-ss,并给它时区美国/Los_Angeles。 如果我更改时区,Carbon将自动从时间中减去7小时,这就是将时间从UTC更改为PST时发生的情况,但我的DB中的时间设置为PST时间。例如,我希望时间是今天上午10点,但如果我改变时区,碳将转换为今天凌晨3点。 如果时区改为PST,但仍然保持上午10点的