0

У меня есть фрагмент с ListView на нем. Этот ListView заполнен адаптером.Обновить фрагмент из AlertDialog

Я запускаю DialogFragment, и там я могу ввести данные для строки now в ListView.

Теперь я хочу обновить фрагмент в диалоге, когда диалог закрыт.

Как обновить ListView? Я не могу вызвать notifyDataSetChanged() извне фрагмента.

Я прочитал что-то о загрузчике обратного вызова, но я заполнил ListView массивом. Насколько я понимаю загрузчик обратного вызова, я должен использовать Курсор для этого.

Я также попытался вызвать функцию активности, но тогда я не смог вызвать notifyDataSetChanged() тоже. Чтобы сделать статический адаптер не работает.

Надеюсь, что кто-то поймет мою проблему и может остановиться, чтобы исправить ее.

ответ

0

Вы можете просто установить вызывающий фрагмент в качестве прослушивателя.

FragmentManager fm = getSupportFragmentManager(); 
MyDialog d = new MyDialog(); 
d.setDataChangeListener(this); 
d.show(fm, "fragment_name"); 
1

В вашем случае я передам экземпляр адаптера классу, который создает диалоговое окно. Я не вижу другого решения.

Вы также можете создать диалог в классе фрагментов и определить OnClickListener как внутренний класс, чтобы вы могли напрямую получить доступ к адаптеру.

Вы также можете использовать что-то вроде автобуса событий, что очень помогает в сочетании с вшей.

Смежные вопросы