单击当前项目时更改适配器中的下一项背景颜色



如何在从适配器单击当前项目按钮时更改下一项RecyclerView的颜色。
我的代码是这样的:

holder.pick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.pick.startAnimation(animFadeIn);
editStatus(studentrouteList.get(position).getId(),"2");
holder.waittime.setText("done!");
holder.itemstudent.setBackgroundColor(Color.parseColor("#bee180"));
int currentpos =holder.getAdapterPosition();
int oldpos = holder.getOldPosition();
Log.e("", String.valueOf("new pos : "+ currentpos + "old pos : "+ oldpos));
Constant.pos = currentpos + 1;
int newpos = position+1;
if(studentrouteList.get(position + 1).getStatus().equals("0")) {
holder.itemstudent.setBackgroundResource(R.drawable.next_pickup); // here change current item view ... Need next item to change
}
}
}); 

您可以通过两种不同的方式轻松完成此操作。

// position of next updated item which we need to update background
updatedPositionToChangeBgColor = -1
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
Log.d("onBindViewHolder called ","Adapter");
if(updatedPositionToChangeBgColor == position) {
holder.itembackground.setColor("#000000");
} else {
// do nothing   
}
holder.item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//update position of next item and call notifyItemChanged to tell adapter it need to recreate next item again  
updatedPositionToChangeBgColor = position + 1;
notifyItemChanged(updatedPositionToChangeBgColor);
}
});
}

Second Way 再次相同,但从活动类或模型调用中,您可以使用接口更新位置并调用notifyItemChanged(updatedPositionToChangeBgColor);告诉适配器重新创建该项目。一切就绪 好走。 谢谢

最新更新