با سلام
من برای کسب تجربه بیشتر و درک بهتر RecyclerView سعی کردم action حذف شدن ایتمها رو با نشان دادن یک پیغام با استفاده از dialog جالبترش کنم تا جایی جلو رفتم که تونستم با متود onLongClick بر روی ایتمهای ریسایکر ویو dialog رو نشان بدم بر روی صفحه :
کدهای مربوط به ContactAdapter :
itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
itemEventListener.onLongItemClick(getAdapterPosition());
return false;
}
});
}
}
public interface ItemEventListener{
void onItemClick(String fullName, int position);
void onLongItemClick(int position);
}
کدهای مربوط MainActivity :
@Override
public void onLongItemClick(int position) {
editingItemPosition = position;
MyDialog myDialog = new MyDialog();
myDialog.setCancelable(false);
myDialog.show(getSupportFragmentManager(),null);
}
اما در قسمت پاک کردن ایتم مورد نظر پس از فشردن دکمه yes بر روی دیالوگ به مشکل بر خوردم چون نمیتونستم position ایتم رو در activiy دیالوگ دریافت کنم ، سعی کردم ContactsAdapter.ItemEventListener در DialogFragment ایمپلمنت کنم و اینترفس رو یکبار دیگه کال کنم تا بتونم یک integeri رو به position ربط بدم :
#editingItemPosition = -1 مقدار دهی شده در Dialogfragment
@Override
public void onLongItemClick(int position) {
editingItemPosition = position;
}
اما پس از اجرا Fatal Error گرفتم چون متودی که در contactAdapter به نام deleteContact تعریف کرده بودم در موقع کال شدن در قسمت onClickListener دکمه Yes در اکتیویتی DialogFragment مقدار 1- نشان میداد :
کد مربوط به متود deleteContact در کلاس ContactAdapter
public void deleteContact(int position){
contacts.remove(position);
notifyItemRemoved(position);
}
کد مربوط به onClickListenr دکمه yes در DialogFragment :
okBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
adapter.deleteContact(editingItemPosition);
dismiss();
}
});
حتی سعی کردم از intent کمک بگیرم اما نتوستم چون اشنایی کامل نداشتم با مبحثش ، اگر امکانش هست بهم در این زمینه کمک کنید.