Переместите элемент recyclerview в другой recyclerview, нажав на кнопку «Пользовательский адаптер».

#android #android-recyclerview

Вопрос:

У меня есть два представления переработчика, и оба они используют один и тот же пользовательский адаптер.

https://imgur.com/3WMGgiL — вот как выглядит предмет с точки зрения переработчика

Что я хочу сделать, так это всякий раз, когда нажимается кнопка «Резервная зона Anuleaza», я хочу удалить элемент из текущего просмотра вторсырья и добавить его в другое представление переработчика

Как я могу это сделать? Я оставлю свой пользовательский код адаптера ниже. Я действительно не понимаю, что писать в прослушивателе по щелчку мыши.

 public class RecyclerViewAdapterRezervare extends RecyclerView.Adapter<RecyclerViewAdapterRezervare.RecycleViewHolder> {
    private List<Rezervare> rezervari;
    private Context context;
    private LayoutInflater inflater;
    private String numeUtilizator;
    private String status;

    private Rezervare rezervare = new Rezervare();

    private DatabaseReference reff;

    public RecyclerViewAdapterRezervare(List<Rezervare> rezervari, Context context, String numeUtilizator) {
        this.rezervari = rezervari;
        this.context = context;
        this.numeUtilizator = numeUtilizator;
        this.inflater = LayoutInflater.from(context);
    }

    @NonNull
    @Override
    public RecycleViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = inflater.inflate(R.layout.rezervari_layout, parent, false);
        return new RecycleViewHolder(view);
    }


    @Override
    public void onBindViewHolder(@NonNull RecycleViewHolder holder, int position) {
        rezervare = rezervari.get(position);

        holder.btn_anuleaza.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View view) {
            new AlertDialog.Builder(view.getContext()).setTitle("Anulare rezervare").setMessage("Sunteti sigur ca doriti anularea rezervarii?")
    .setPositiveButton(R.string.da, new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialogInterface, int i) {
            holder.btn_anuleaza.setText(R.string.anulat);
            holder.btn_anuleaza.setBackgroundColor(view.getResources().getColor(R.color.red));
            }
          }).setNegativeButton(R.string.nu, null).show();
          }
          });

    }

    @Override
    public int getItemCount() {
        return rezervari.size();
    }

    public static class RecycleViewHolder extends RecyclerView.ViewHolder {
        public TextView tv_nume_teren;
        public TextView tv_adresa_teren;
        public TextView tv_ora;
        public TextView tv_data;
        public Button btn_anuleaza;
        public Button btn_navigheaza;

        public static boolean isCanceled;


        public RecycleViewHolder(@NonNull View itemView) {
            super(itemView);
            tv_nume_teren = itemView.findViewById(R.id.tv_rezervare_nume_teren);
            tv_adresa_teren = itemView.findViewById(R.id.tv_rezervare_adresa_teren);
            btn_anuleaza = itemView.findViewById(R.id.btn_anuleaza);
            btn_navigheaza = itemView.findViewById(R.id.btn_maps);
            tv_ora = itemView.findViewById(R.id.tv_rezervare_ore);
            tv_data = itemView.findViewById(R.id.tv_rezervare_data);

            isCanceled = false;

            if(isCanceled){
                btn_anuleaza.setText(R.string.anulat);
                btn_anuleaza.setBackgroundColor(itemView.getResources().getColor(R.color.red));
            } else {
                btn_anuleaza.setText(R.string.anuleaza_rezervare);
                btn_anuleaza.setBackgroundColor(itemView.getResources().getColor(R.color.teal_700));
            }
        }
    }

 

Когда я нажимаю на кнопку «Резервная база Anuleaza», две кнопки становятся красными и недоступными, и я хочу перенести элемент в другое представление переработчика. Как я могу это сделать? Спасибо!

Комментарии:

1. при нажатии на элемент элемент добавляется в другой список представлений переработчика, а также удаляется из текущего представления переработчика. не забудьте уведомить набор данных об изменении в адаптере

2. но я хочу переместить элемент, когда я нажимаю кнопку на элементе (точно так же, как на изображении). Как я могу добавить в другой список, когда я нажимаю кнопку на элементе?

Ответ №1:

Вы можете добиться этого, позвонив,
int removeIndex = 2;
data.remove(removeIndex);
adapter.notifyItemRemoved(removeIndex);

на первом просмотре вторсырья и обновите второй, позвонив,

String newItem = "This is a new item.";
int updateIndex = 3; // Your index to insert new the item
data.set(updateIndex, newItem);
adapter.notifyItemChanged(updateIndex);

для второго просмотра вторсырья.

Комментарии:

1. да, но я хочу добавить во второй список, когда я нажимаю кнопку на элементе (как на фотографии), и я хочу добавить тот же элемент, который я удалил

2. Хорошо, тогда вы можете сначала сохранить элемент, подлежащий удалению, во временной переменной, а затем добавить его в другой список, используя secondList.add(tempItem); , и это будет добавлено в другой список.

3. но как я могу отличить первый recyclerview от второго, потому что они оба используют один и тот же пользовательский адаптер?