商品にはRecyclerView
があります。そのためRecyclerView
私はカスタムアダプタを作成しています。 1つの行を選択すると、そのビューの背景色が変更されます。問題は、RecyclerView
にアイテムがたくさんあるときに、1つの行をクリックすると、アプリケーションがそのビューの背景色を変更しますが、別の行の背景色も変更されます。RecyclerViewマルチセレクション - Android
マイアダプターコード:
public class NarackiAdapter extends RecyclerView.Adapter<NarackiAdapter.MyViewHolder> {
private LayoutInflater inflater;
private List<TableItems> items = new ArrayList<>();
private List<TableItems> selected = new ArrayList<>();
public NarackiAdapter(Context context, List<TableItems> items) {
inflater = LayoutInflater.from(context);
this.items = items;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.one_item, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
final TableItems item = items.get(position);
holder.tvName.setText(item.getQuantity() + " " + item.getProducts().getName());
}
@Override
public int getItemCount() {
return items.size();
}
class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView tvName;
public MyViewHolder(View itemView) {
super(itemView);
tvName = (TextView) itemView.findViewById(R.id.tvName);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (getBackgroundColor(view) == R.color.primary) {
view.setBackgroundResoucre(R.color.light_gray);
selected.remove(items.get(getAdapterPosition()));
} else {
view.setBackgroundResoucre(R.color.primary);
selected.add(items.get(getAdapterPosition()));
}
}
}
}
うーむ..私は完全に更新答えをチェック@KiKo – KiKo
...あなたを理解していません – AmirG