में एक हटाएं बटन जोड़ें मैं RecyclerView
में स्थित स्थिति के आधार पर डेटाबेस में किसी आइटम को हटाने के लिए एक डिलीट बटन जोड़ने की कोशिश कर रहा हूं। मैं इसके साथ संघर्ष कर रहा हूं।एक RecyclerView
<TextView
android:id="@+id/layout_list_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:textStyle="bold"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/layout_list_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/layout_list_name"
android:layout_alignLeft="@+id/layout_list_name"
android:layout_below="@+id/layout_list_name" />
<ImageButton
android:id="@+id/layout_list_delete"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:contentDescription="Delete"
android:src="@drawable/icon_layout_delete_layout_item" />
यह वह जगह है जहाँ मैं ImageButton
जो हटाएँ बटन है के लिए onItemClick
घोषित:
private OnItemClickListener onItemClickListener;
public interface OnItemClickListener {
void onItemClick(View view, int position);
}
GestureDetector gestureDetector;
public ListsDatabaseItemListener(Context context, OnItemClickListener listener) {
onItemClickListener = listener;
gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onSingleTapUp(MotionEvent motionEvent) {
return true;
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
View view = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY());
if (view != null && onItemClickListener != null && gestureDetector.onTouchEvent(motionEvent)) {
onItemClickListener.onItemClick(view, recyclerView.getChildLayoutPosition(view));
return true;
}
return false;
}
@Override
public void onTouchEvent(RecyclerView recyclerView, MotionEvent motionEvent) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
:
imageButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getBaseContext(), "Delete hit!", Toast.LENGTH_SHORT).show();
}
});
यह मेरा RecyclerView
श्रोता वर्ग है यहाँ RecyclerView
के लिए मेरे लेआउट फ़ाइल है
और आखिरकार, यहां मेरा एडाप्टर वर्ग है:
List<ListsDatabaseList> list;
public ListsDatabaseListAdapter(List<ListsDatabaseList> list) {
this.list = list;
}
@Override
public ListsDatabaseListHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_list, parent, false);
ListsDatabaseListHolder holder = new ListsDatabaseListHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ListsDatabaseListHolder holder, int position) {
holder.name.setText(list.get(position).getName());
holder.date.setText(list.get(position).getDate());
}
@Override
public int getItemCount() {
return list.size();
}
public static class ListsDatabaseListHolder extends RecyclerView.ViewHolder {
TextView name;
TextView date;
ImageButton delete;
public ListsDatabaseListHolder(View view) {
super(view);
this.name = (TextView) view.findViewById(R.id.layout_list_name);
this.date = (TextView) view.findViewById(R.id.layout_list_date);
this.delete = (ImageButton) view.findViewById(R.id.layout_list_delete);
}
}
इसे प्राप्त करने के तरीके पर कोई सुझाव?
ऐसा नहीं है कि आप यह कोड प्रदान की महान है और सभी, लेकिन आपका प्रश्न क्या है? गतिविधि में हटाए गए श्रोता जोड़ने के बजाय –
, आप इसे रीसाइक्लर एडाप्टर में ऑनबिंडव्यूहोल्डर के अंदर कर सकते हैं। –
मैंने अपने प्रश्न को बहुत ऊपर से पूछा लेकिन स्पष्ट रूप से मुझे खुद को स्पष्ट नहीं किया। – Razor