RecyclerView изменить цвет itemView в контекстном меню - PullRequest
0 голосов
/ 04 ноября 2018

Я хочу изменить цвет itemView в моем recyclerView с помощью contextMenu, но когда я нажимаю кнопку, contextMenu меняет другой itemView.

Мой класс адаптера:

public class AdapterGameOne extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private ArrayList<TableOne> list;
private Context context;
public AdapterGameOne(ArrayList<TableOne> list, Context context) {
    this.list = list;
    this.context = context;
}

@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    return new TableOneVH(LayoutInflater.from(parent.getContext())
            .inflate(R.layout.item_first_game, parent, false));
}

@Override
public void onBindViewHolder(@NonNull final RecyclerView.ViewHolder holder, final int position)  {


  final   TableOneVH    tableOneVH=(TableOneVH)holder;
     TableOne tableOne=list.get(position);
     tableOneVH.textView.setText(tableOne.getName());
     tableOneVH.textView.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
             Log.d("cfc","holv "+holder.getAdapterPosition()+"pos "+position+"myHold "+tableOneVH.getAdapterPosition());
             tableOneVH.itemView.showContextMenu();
         }
     });



}
@Override
public int getItemCount() {
    return list.size();
}
public class TableOneVH extends RecyclerView.ViewHolder implements View.OnCreateContextMenuListener {
    TextView textView;
    RelativeLayout layout;

    public TableOneVH(View itemView) {
        super(itemView);
        layout=itemView.findViewById(R.id.rel);
        textView=itemView.findViewById(R.id.tvForFirstGame);
        itemView.setOnCreateContextMenuListener(this);
    }

    private final MenuItem.OnMenuItemClickListener onEditMenu = new MenuItem.OnMenuItemClickListener() {
        @Override
        public boolean onMenuItemClick(MenuItem item) {



            switch (item.getItemId()) {
                case 1:


                  itemView.setBackground(ContextCompat.getDrawable(context, R.color.grey));
                    Toast.makeText(context,"adapterPosition= " +getAdapterPosition(),Toast.LENGTH_LONG).show();

                    break;
            }
            return true;
        }
    };
    @Override
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
        MenuItem Grey = menu.add(Menu.NONE, 1, 1, "Grey");
        Grey.setOnMenuItemClickListener(onEditMenu);
    }
}}

Например, я выбираю первый элемент и пытаюсь изменить цвет, и когда я делаю это в результате, я вижу, что contextMenu изменило мой элемент и еще один:

введите описание изображения здесь

...