我正在尝试更改 RecycleView 中特定项目的背景颜色。因为我也需要设置文本,所以我有以下代码可以正常工作:
protected void populateViewHolder(RankingViewHolder viewHolder, final Ranking model, int position)
{
final Context mContext = getActivity().getApplicationContext();
viewHolder.txt_name.setText(model.getUserName());
viewHolder.txt_score.setText(String.valueOf(model.getScore()));
viewHolder.txt_class.setText(model.getUser_class());
Picasso.with(mContext).load(model.getAvatarUrl()).error(R.drawable.ic_people_black_24dp).into(viewHolder.personPhoto);
int totalRanking = adapter.getItemCount();
int realRank = totalRanking - viewHolder.getAdapterPosition();
viewHolder.ranknumber.setText("# "+String.valueOf(realRank));
}
这可以按我的意愿工作并realRank采用正确的值,并且viewHolder.ranknumber.setText("# "+String.valueOf(realRank));
设置正确的文本没有问题。
现在我正在尝试(因为我得到了正确的数字/文本结果,所以做出这样的 if 语句:
if(adapter.getItemCount() -viewHolder.getAdapterPosition() == 0)
{
viewHolder.itemView.setBackgroundColor(Color.GREEN);
}
if(adapter.getItemCount() -viewHolder.getAdapterPosition() == 1)
{
viewHolder.itemView.setBackgroundColor(Color.YELLOW);
}
if(adapter.getItemCount() -viewHolder.getAdapterPosition() == 2)
{
viewHolder.itemView.setBackgroundColor(Color.BLUE);
}
(我尝试了String.valueOf(realRank)平等,realRank也尝试了平等)在所有情况下,我都有相同的结果。颜色在位置 1、2、3 应发生变化,但在 7、8、9 和 14、15、16 和 21、22、23 等位置发生变化。
我在这里想念什么?
public class RankingViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener
{
private ItemClickListener itemClickListener;
public TextView txt_name, txt_score, txt_class, ranknumber;
public ImageView personPhoto;
这行代码int realRank = totalRanking - viewHolder.getAdapterPosition();给出了一个数字(1、2、3、4、5、6 等)。为什么我不能用这个数字来检查相等性?
这会改变颜色,但不仅仅是 3 个第一个项目。当您向下滚动时,每 3 个第一个可查看项目的颜色会像以前一样更改,即 1、2、3、7、8、9 等。
蝴蝶刀刀
慕的地8271018
紫衣仙女
相关分类