Recyclerview 以编程方式设置背景颜色
Posted
技术标签:
【中文标题】Recyclerview 以编程方式设置背景颜色【英文标题】:Recyclerview setting background color programatically 【发布时间】:2021-10-18 05:32:01 【问题描述】:我正在通过改造从服务器获取数据。如果数据为正,则颜色应为绿色,否则应为红色。就像 Sensex 一样,如果它是阳性的,那么它会显示绿色,否则会显示红色。 See Image for reference.Onbind 视图我在下面完成,但它是用于网格视图中的位置
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position)
if(position % 2 ==0)
holder.itemView.setBackgroundColor(
ContextCompat.getColor(holder.itemView.getContext(), R.color.red));
else
holder.itemView.setBackgroundColor(
ContextCompat.getColor(holder.itemView.getContext(), R.color.green));
如何实现。
【问题讨论】:
你还有什么问题? @Teo-Pls 看看我想做的图像。如果它是正面的,那么我想在卡片上显示绿色,如果它是负面的,那么我想显示红色 将多视图类型功能与 recyelerview 一起使用。我认为这是满足您要求的最佳方式。 https://***.com/questions/26245139/how-to-create-recyclerview-with-multiple-view-types https://blog.mindorks.com/recyclerview-multiple-view-types-in-android 可能这个链接对你有帮助。如何创建它。 只是为您的项目设置一个参数?isPositive
- 布尔值,然后像你在onBindViewHolder
中所做的那样设置颜色
@Teo-你能举一些例子吗,我是初学者
【参考方案1】:
-
您可以准备一个单独的列表来显示adapter.like中的数据 -
`List<ListItem> listDisplay= new ArrayList()`
创建提供 getter() 和 setter() 方法的 ListItem 类。
访问https://www.w3schools.com/java/java_encapsulation.asp。您可以创建
一个变量,它是这个类中的 getter() 和 setter() 方法,基于
您在卡片视图上显示数据的要求
当您将收到来自服务器的列表数据时,创建一个实例
ListItem 类和使用循环只是将接收到的值设置为其
变量并将接收到的数据项添加到列表listDisplay中
在初始化时将此 listDisplay 传递给 adapter 的构造函数。
在adapter的onBindViewHolder()方法中,执行如下代码
position)
//create a ListItem
ListItem listItem = *listMaintainedInAdapter*.get(position)
/*create a instance of adapter's view holder class who holds the
views reference.*/
/*Check data is positive or not. here, num is variable declared in
ListItem class who holds the value which you want to check*/
if(listItem.num > 0)
//set card colour to green
else
//set card colour to red.
```
【讨论】:
【参考方案2】: @Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position)
val data = list[holder.adapterPosition]
if (data.changeValue > 0)
holder.itemView.setBackgroundColor(
ContextCompat.getColor(holder.itemView.getContext(), R.color.red));
else
holder.itemView.setBackgroundColor(
ContextCompat.getColor(holder.itemView.getContext(), R.color.green));
data.changeValue
是来自 API 的数据值,例如 207.57 或 -63.85(我只是假设)。我希望这个解决方案能解决您的问题。
【讨论】:
以上是关于Recyclerview 以编程方式设置背景颜色的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式设置 UINavigationbar 的背景颜色?