Recyclerview 以编程方式设置背景颜色
Recyclerview setting background color programatically
我正在通过改造从服务器获取数据。如果数据为正,则颜色应为绿色,否则应为红色。就像 Sensex 一样,如果它是正的,那么它显示绿色,否则显示红色。
See Image for reference.Onbind viewholder 我在下面完成但它用于网格视图中的位置
@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()`
- 创建 ListItem class,它提供 getter() 和 setter() 方法。
访问 https://www.w3schools.com/java/java_encapsulation.asp 。您可以创建
一个变量和它的 getter() & setter() 方法在此 class 基于
您在卡片视图上显示数据的要求
- 当您将从服务器接收列表数据时,创建一个实例
ListItem class & 使用循环只是将接收到的值设置为其
变量并将接收到的数据项添加到列表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.
}
}```
@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(我只是假设)。我希望这个解决方案能解决您的问题。
我正在通过改造从服务器获取数据。如果数据为正,则颜色应为绿色,否则应为红色。就像 Sensex 一样,如果它是正的,那么它显示绿色,否则显示红色。 See Image for reference.Onbind viewholder 我在下面完成但它用于网格视图中的位置
@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()`
- 创建 ListItem class,它提供 getter() 和 setter() 方法。 访问 https://www.w3schools.com/java/java_encapsulation.asp 。您可以创建 一个变量和它的 getter() & setter() 方法在此 class 基于 您在卡片视图上显示数据的要求
- 当您将从服务器接收列表数据时,创建一个实例 ListItem class & 使用循环只是将接收到的值设置为其 变量并将接收到的数据项添加到列表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.
}
}```
@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(我只是假设)。我希望这个解决方案能解决您的问题。