android - Recyclerview 以编程方式设置背景颜色
问题描述
我正在通过改造从服务器获取数据。如果数据为正,则颜色应为绿色,否则应为红色。就像 Sensex 一样,如果它是阳性的,那么它会显示绿色,否则会显示红色。 请参阅图像以供参考。我在下面完成了 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));
}
如何实现。
解决方案
- 您可以准备一个单独的列表来显示adapter.like中的数据 -
`List<ListItem> listDisplay= new ArrayList()`
- 创建提供 getter() 和 setter() 方法的 ListItem 类。访问https://www.w3schools.com/java/java_encapsulation.asp。您可以根据您的要求在该类中创建一个变量及其 getter() 和 setter() 方法,以在卡片视图上显示数据
- 当您将从服务器接收列表数据时,创建 ListItem 类的实例并使用循环只需将接收到的值设置为其变量并将接收到的数据项添加到列表 listDisplay
- 在初始化时将此 listDisplay 传递给 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.
}
}```
推荐阅读
- python - 为什么 python 中的 hash() 函数需要恒定的时间来操作可变长度的字符串?
- c# - C# SRI 哈希生成器
- vue.js - 输入字段的绑定值在 Vue 中不会更新
- laravel - Laravel Yajra 数据表原始 SQL
- ansible - 如何列出所有当前的 ansible 库存组列表
- html - 2020 年的 HTML 副标题标记
- unity3d - 如何使统一构建文件夹共享相同的资产
- java - keycloak 管理客户端在 executeActionsEmail() 上返回 400
- teamcity - 将工件 a、b、c 发布为 a.zip、b.zip、c.zip
- python - UpdateMany 给出错误:“集合”对象不可调用