Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 阅读Firebase DB后如何在RecycleView中更改itemView?_Java_Firebase_Android Recyclerview - Fatal编程技术网

Java 阅读Firebase DB后如何在RecycleView中更改itemView?

Java 阅读Firebase DB后如何在RecycleView中更改itemView?,java,firebase,android-recyclerview,Java,Firebase,Android Recyclerview,我有一个产品列表,我正在使用recycleView来显示它们。 我想根据数据库中的数据更改其中一些的颜色 我已经有了所有的信息,我只想知道如何正确地做。 我只是在adapter类中编写了一个函数,它从数据库中读取并获取我想要着色的所有产品。我在构造函数中调用这个函数 我不知道我写得对不对 无论如何,我的问题是我想在-onBindViewHolder到setTextColor 但是数据还没有更新,所以基本上什么都没有发生 @覆盖 public void onBindViewHolder(@NonN

我有一个产品列表,我正在使用
recycleView
来显示它们。 我想根据数据库中的数据更改其中一些的颜色

我已经有了所有的信息,我只想知道如何正确地做。 我只是在adapter类中编写了一个函数,它从数据库中读取并获取我想要着色的所有产品。我在构造函数中调用这个函数

我不知道我写得对不对

无论如何,我的问题是我想在-
onBindViewHolder
setTextColor
但是数据还没有更新,所以基本上什么都没有发生

@覆盖
public void onBindViewHolder(@NonNull ProductItemView holder,int位置)
{
holder.bind(MPProductsList.get(位置)、Barcode.get(位置));
....
....
holder.nameProductTextView.setTextColor(Color.GREEN);
}
mpProductsList
是所有产品的列表,其中一些我想用彩色绘制。
部分中,我检查此产品是否位于我在上面编写的函数中从数据库中读取的另一个容器中。

我相信您正在使用RecyclerView.Adapter,因为onBindViewHolder的方法签名只有两个参数。Firebase有自己的用于recyclerviews的适配器,请参阅。它会为您侦听数据库,这样您就不需要一直查询数据库。只要实现OnDataChanged方法,就可以在数据更新时执行您想要执行的操作。

也许您可以使用
LiveData
RxJava
通过订阅->观察模式来实现反应式数据填充。您想在发生某些事情或呈现数据时更改颜色吗?@AlexeyUsharovski LiveData可以当下划线数据集更改时使用。当数据被渲染时,这似乎更像是一种条件渲染。