#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 от второго, потому что они оба используют один и тот же пользовательский адаптер?