У меня есть RecyclerView
внутри фрагмента. Этот же фрагмент также содержит Dialog
. Когда вы открываете диалоговое окно, новые данные добавляются в RecylerView
под этим диалоговым окном.
Моя цель
Я хочу вызвать notifydatasetchanged()
из диалогового окна, чтобы когда я закрываю диалоговое окно, вновь добавленные данные должны отражаться в RecyclerView
Что я пробовал?
Я пытался использовать для этого интерфейсы. Мой текущий подход выглядит так:
My Dialog class
public class DialogRitual extends Dialog {
AdapterUpdater adapterUpdater = null;
Button gotit;
Activity c;
public interface AdapterUpdater {
void onDataUpdated();
}
public DialogCreateNewRitual(@NonNull Context context) {
super(context);
this.c = (Activity) context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.ritual_create_new);
gotit = (Button) findViewById(R.id.createritualbutt);
gotit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// MORE DATA IS ADDED TO RECYCLER VIEW HERE
adapterUpdater.onDataUpdated();
dismiss();
}
});
}
My Fragment Class
public class Fragment_Home_Ritual extends Fragment implements DialogCreateNewRitual.AdapterUpdater {
private List<POJO_Rituals> mylist = new ArrayList<>();
private RecyclerView recyclerView;
public AdapteRitualsRecycler mAdapter;
Button createown;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
final View view = inflater.inflate(R.layout.fragment__home__ritual, container, false);
createown = view.findViewById(R.id.opencreatedialog);
recyclerView = (RecyclerView) view.findViewById(R.id.ritualsrecycler);
((Activity_Home)getActivity()).hideFABs();
mAdapter = new AdapteRitualsRecycler(mylist);
//ADAPTER POPULATION CODE HERE
return view;
}
@Override
public void onDataUpdated() {
mAdapter.notifyDataSetChanged();
}
}
Проблема?
Я получаю сообщение об ошибке:
Попытка вызвать метод интерфейса voidDialogs.DialogRitual $ AdapterUpdater.onDataUpdated () для ссылки на нулевой объект