[当我当时滚动时,当我返回同一View时,视图持有者的位置正在改变。我想在单击项目时高亮显示我的视图持有者,然后第二次恢复正常。这是我的onBindViewHolder
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
holder.setIsRecyclable(false);
list = cont.get(position);
String name = (list.getName());
holder.cont_name.setText(name);
holder.cont_number.setText(list.getPhone());
// System.out.println("VAL : " + list.isSelected());
holder.itemView.setBackgroundColor(list.isSelected() ? Color.CYAN : Color.WHITE);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.setSelected(!list.isSelected());
holder.itemView.setBackgroundColor(list.isSelected() ? Color.CYAN : Color.WHITE);
}
});
if (list.isSelected()){
System.out.println("selected : " + position);
}
}
我正在将联系人显示在“回收者”视图中,并且该视图持有者持有该视图。我有用于名称和数字的getter和setter方法。
class ViewHolder extends RecyclerView.ViewHolder {
public TextView cont_name;
public TextView cont_number;
public LinearLayout contact_select_layout, mainLL;
public ViewHolder(View itemView) {
super(itemView);
this.setIsRecyclable(false);
cont_name = itemView.findViewById(R.id.cont_name);
cont_number = itemView.findViewById(R.id.cont_number);
contact_select_layout = itemView.findViewById(R.id.contact_select_layout);
mainLL = itemView.findViewById(R.id.mainLL);
}
}
更改
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.setSelected(!list.isSelected());
holder.itemView.setBackgroundColor(list.isSelected() ? Color.CYAN : Color.WHITE);
}
});
to
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
cont.get(position).setSelected(!cont.get(position).isSelected());
holder.itemView.setBackgroundColor(list.isSelected() ? Color.CYAN : Color.WHITE);
notifyDataSetChanged()
}
});
希望这会有所帮助。