Да, есть много способов справиться с этим ... Вы можете создать это, во-первых,
Если вы создаете свой фрагмент с помощью XML, то вам просто нужно получитьваш фрагмент сначала похож на
FragmentClassName object=getSupportFragmentManager().findFragmentById(R.id.id_frag);
Если вы добавляете фрагмент по группам представления программно
FragmentClassName object=getSupportFragmentManager().beginTransaction().add().commit();
Используйте этот объект для вызова любого методаиз класса фрагмента для обновления представления или данных
Как здесь,
holder.layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle("Remove");
builder.setTitle("Do you want to remove");
builder.setNeutralButton("Remove", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int witch) {
DatabaseHelper dbHelper = new DatabaseHelper(context);
dbHelper.deleteItem(cot.getId(), context);
list.remove(position);
recyclerView.removeViewAt(position);
notifyItemRemoved(position);
object.methodCall();
// Don't do that only one call is enough to delete item from view
// notifyItemRangeChanged(position,list.size());
//notifyDataSetChanged();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int witch ) {
dialog.dismiss();
}
});
builder.create().show();
}
});
Другими являются некоторые хитрые методы, которые называются механизмами вызова с использованием интерфейса,
, если вы знаете о нихзатем вы можете сделать трюк, выполнив статический вызов метода для привязки интерфейса, и использовать его объект для вызова.
Позвольте мне обновить мой ответ для получения дополнительной помощи, вызвав механизм интерфейса
//write this on your activity or fragment to get delete notification
// Can be used to get reply on Any Class Either Activity or Fragment, no matter you recycler or adapter existence class.
Adapter.bindListener(new Adapter.NotifyMe() {
@Override
public void onItemDelete() {
// When ever your delete code run your this block run then you can
//Update your code from here if you want to update things of fragment class
}
});
Ваш класс адаптера
Class Adapter extend RecyclerView.Adapter<Adapter.ViewHolder> {
private static NotifyMe notifyMe;
public static void bindListener (NotifyMe notifyMeListener){
notifyMe = notifyMeListener;
}
@Override
public void onBindViewHolder (@NonNull ViewHolder viewHolder,int position){
holder.layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
builder.setNeutralButton("Remove", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int witch) {
//....
notifyItemRemoved(position);
// object.methodCall();
//Call this here this will take you to implementation block.
if (notifyMe != null)
notifyMe.onItemDelete();
// Don't do that only one call is enough to delete item from view
// notifyItemRangeChanged(position,list.size());
//notifyDataSetChanged();
}
});
}
});
}
public interface NotifyMe {
void onItemDelete();
}
}
Или, более того, есть еще одна реализация для вашего обучения
// Код объявления объекта вашего адаптера
Adapter adapter = new Adapter(new Adapter.NotifyMe() {
@Override
public void onItemDelete() {
// When ever your delete code run your this block run then you can
//Update your code from here if you want to update things of fragment class
}
});
Код класса адаптера:
Class Adapter extend RecyclerView.Adapter<Adapter.ViewHolder> {
private NotifyMe notifyMe;
public Adapter(NotifyMe notifyMe) {
this.notifyMe=notifyMe;
}
@Override
public void onBindViewHolder (@NonNull ViewHolder viewHolder,int position){
holder.layout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
builder.setNeutralButton("Remove", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int witch) {
//....
notifyItemRemoved(position);
// object.methodCall();
//Call this here this will take you to implementation block.
notifyMe.onItemDelete();
// Don't do that only one call is enough to delete item from view
// notifyItemRangeChanged(position,list.size());
//notifyDataSetChanged();
}
});
}
});
}
public interface NotifyMe {
void onItemDelete();
}
}