我在RecyclerView
中为项目的资源设置颜色时遇到问题。
我尝试过这两种方法但没有效果。我有什么想法吗?
holder.alert.setTextColor(R.color.alertGreen);
holder.alert.setTextColor(getResources().getColor(R.color.alertGreen));
答案 0 :(得分:7)
使用ContextCompat
获取颜色。
holder.alert.setTextColor(ContextCompat.getColor(context, R.color.alertGreen));
答案 1 :(得分:1)
在onBindViewHolder(RecyclerView.ViewHolder holder, int position)
方法中,您可以更改当前元素颜色:
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
holder.alert.setTextColor(R.color.alertGreen);
holder.alert.setTextColor(getResources().getColor(R.color.alertGreen);
}
使用ContextCompat
获取颜色:
ContextCompat.getColor(context, R.color.alertGreen));
答案 2 :(得分:1)
您应该使用ContextCompact
代替getResources()
,因为此方法为deprecated
。
holder.alert.setTextColor(ContextCompat.getColor(context, R.color.red));
答案 3 :(得分:1)
要更新单个项目的颜色,您可以按照以下技术进行操作,
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
// Green color to set to specific item in the view [By referencing the position you need to handle the view]
int color1 = ContextCompat.getColor(context, R.color.alertGreen));
// Red color to set to remaining Views
int color2 = ContextCompat.getColor(context, R.color.alertRed));
if (position == 1) {
holder.alert.setTextColor(color1);
} else {
holder.alert.setTextColor(color2);
}
}
答案 4 :(得分:0)
使用ContextCompat的另一种方法是:
holder.alert.setTextColor(context.getResources().getColor(R.color.alertGreen));