java - RecyclerView onCreateViewHolder 位置背景颜色
问题描述
我需要在里面设置背景颜色onCreateViewHolder
。所以,当我position
等于position % 2 == 0
然后设置一个背景颜色,否则设置另一个颜色。我的背景颜色是我所有行的标准颜色,这就是为什么我想在里面使用它onCreateViewHolder
而不是onBindViewHolder
。如果我错了,请纠正我。问题是当我在holder.getAdapterPosition
里面使用onCreateViewHolder
它时返回'-1'
。这对我来说似乎很正常。但是我该如何解决呢?
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View mView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.inflate_common_item, viewGroup, false);
ViewHolder holder= new ViewHolder(mView);
if(holder.getAdapterPosition % 2 ==0)
{
//Row BackgroundColor to red.
}
else
{
//Row BackgroundColor to Green.
}
return holder;
}
因此,当我使用上面的代码时,我遇到了索引超出范围的异常。有什么办法可以解决吗?
解决方案
尝试这个:
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.inflate_common_item, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if(position % 2 ==0) {
holder.itemView.setBackgroundColor(
ContextCompat.getColor(holder.itemView.getContext(), R.color.color_red));
} else {
holder.itemView.setBackgroundColor(
ContextCompat.getColor(holder.itemView.getContext(), R.color.color_green));
}
}
推荐阅读
- python - 如何在python中删除图表中的空格?
- mongodb - 无法连接到 MongoDB Atlas
- sql - 使用单个查询更新并插入表中
- android - Algolia 的 xml 的“属性”引发编译错误
- javascript - 如何将 Firebase Callables 与 PWA 离线功能结合使用?
- python - 如何在某个未知索引处对字符串输入进行切片
- module - 禁用模块后,Magento2 模块字段在管理员中仍然可见
- powershell - 如何在 Powershell 中使用 OCSP 地址测试证书验证
- pdf - convertapi pdf to image:指定页面范围
- react-native - 什么是 React-Native 中的指针事件