我有一个标准的应用程序设置(Activity,ViewModel,Repository)。活动包含RecyclerView。 RecyclerView有一个适配器。在我的Activity中,我通过观察LiveData对象来更新RecyclerView:
mQuizViewModel.getCurrentQuizTask().observe(this, new Observer<QuizTask>() {
@Override
public void onChanged(QuizTask quizTask){
adapter.setAnswers(quizTask.getAnswers());
}
});
如果用户点击我的RecyclerView的任何项目,则quizTask将被更改,并将依次触发onChanged事件。根据用户点击的项目,我想更改RecyclerView的几个项目的字体颜色。为此,我需要在Activity中对上面提到的observe方法中的每一行进行引用。我怎么解决这个问题?
我很容易解决了这个问题。我改变了适配器的onBindViewHolder方法的颜色。我在对象的类中添加了一个字段,该字段通过传递给适配器
adapter.setData(DataToPass)
在onBindViewHolder方法中,如果条件已满,则检查DataToPass中包含的其他信息以更改文本颜色。