Mam więc widok, który reprezentuje pojedynczy wiersz w RecyclerView, a każdy wiersz ma przycisk usuwania.
ItemSummaryView
public class ItemSummaryView extends RelativeLayout {
....
public void setOnItemClickListener(MyAdapter.OnItemClickListener onItemClickListener) {
this.onItemClickListener = onItemClickListener;
}
....
deleteBtn.setOnClickListener(v -> onItemClickListener.onDeleteClick());
}
W moim adapterze używam ItemSummaryView jako części mojego uchwytu widoku
myADapter
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
return new ItemViewHolder(inflater.inflate(R.layout.item_view, parent, false));
}
return null;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)
((ItemViewHolder) holder).bind(itemsList.get(position), itemsList.size() > 1);
}
}
public interface OnItemClickListener {
void onDeleteClick();
}
private class ItemViewHolder extends RecyclerView.ViewHolder {
private final String ITEM = "item";
private ItemSummaryView view;
private ItemViewHolder(@NonNull View itemView) {
super(itemView);
view = (ItemSummaryView) itemView;
view.setOnItemClickListener(onItemClickListener);
}
private void bind() {
view.setContentDescription(ITEM + getAdapterPosition());
}
}
}
A potem na moim fragmencie chcę zaimplementować metodę delete
myFragment
public class MyFragment implements MyAdapter.OnItemClickListener {
@Override
public void onDeleteClick() {
//add logic here to delete row
}
}
Moje pytanie brzmi: jak uzyskać pozycję wiersza po kliknięciu przycisku usuwania z fragmentu, aby móc go usunąć (implementacja kliknięcia w adapterze nie jest opcją).
1 odpowiedź
MyADapter.
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements MyAdapter.OnItemClickListener {
private OnItemClickListener listener;
.
.
.
public void setListener(OnItemClickListener listener){
this.listener = listener;
}
@Override
public void onDeleteClick() {
listener.onDeleteClick();
}
Myfragment.
adapter.setListener(this);
Ma nadzieję, że to pomaga.
Podobne pytania
Nowe pytania
android
Android to mobilny system operacyjny Google, używany do programowania lub tworzenia urządzeń cyfrowych (smartfony, tablety, samochody, telewizory, Wear, Glass, IoT). W przypadku tematów związanych z Androidem użyj tagów specyficznych dla Androida, takich jak android-intent, android-activity, android-adapter itp. W przypadku pytań innych niż programowanie lub programowanie, ale związanych ze strukturą Androida, użyj tego linku: https: // android.stackexchange.com.