Обновление фрагмента
Обновление фрагмента
В одной активности созданы два фрагмента содержащие списки.
При выборе пункта в одном из списков (первый фрагменте) должны обновляться данные в другом списке (второй фрагменте).
Я пытался использовать для обновления данных второго списка метод notifyDataSetChanged который вызывается для адаптера.
Проблема в том, что по логам уведомление срабатывает, данные обновляются, вот только вид отображения второго списка не меняется.
Обновление данных срабатывает только один раз, когда происходит выбор пункта в первый раз после запуска приложения.
Подскажите методику как правильно обновлять данные во фрагменте.
Прошу заметить что во фрагменте находится список, а не активность и мне необходимо менять не активности, а данные в списке.
При выборе пункта в одном из списков (первый фрагменте) должны обновляться данные в другом списке (второй фрагменте).
Я пытался использовать для обновления данных второго списка метод notifyDataSetChanged который вызывается для адаптера.
Проблема в том, что по логам уведомление срабатывает, данные обновляются, вот только вид отображения второго списка не меняется.
Обновление данных срабатывает только один раз, когда происходит выбор пункта в первый раз после запуска приложения.
Подскажите методику как правильно обновлять данные во фрагменте.
Прошу заметить что во фрагменте находится список, а не активность и мне необходимо менять не активности, а данные в списке.
Re: Обновление фрагмента
Нет такого понятия как "обновить фрагмент", обновляются данные:
Всё что нужно - это получить ссылку на фрагмент Б из фрагмента А.
Всё что нужно - это получить ссылку на фрагмент Б из фрагмента А.
Код: Выделить всё
FragmentManager fm = getActivity().getSupportFragmentManager();
if(fm != null)
{
Fragment fragmentB = fm.findFragmentById(R.id.fragmentB);// так же можно fm.findFragmentByTag(FragmentB.TAG) если при добавления фрагмента использовался тег
if(fragmentB != null)
{
//имеем ссылку на фрагмент Б, делаем уже что хотим, Вам нужно написать метод который будет обновлять данные в фрагменте Б, например:
fragmentB.updateData();
}
}
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена
Re: Обновление фрагмента
С обновлением разобрался.
Есть еще один нюанс.
Первый список во фрагменте имеет штатный вид и стиль (android.R.layout.simple_list_item_activated_1), второй список имеет "самописный" вид и подгружается через SimpleAdapter.
При выборе пункта в первом списке пункт остается подсвеченным, при выборе из второго списка пункт временно мигает но подсветка не остается.
В событии onListItemClick второго списка я могу определить какой пункт был выбран, но вот как подсветить его?
У списка принудительно задал режим работы setChoiceMode(ListView.CHOICE_MODE_SINGLE), может чего то еще не хватает?
В каком направлении двигаться, о чем необходимо почитать?
Есть еще один нюанс.
Первый список во фрагменте имеет штатный вид и стиль (android.R.layout.simple_list_item_activated_1), второй список имеет "самописный" вид и подгружается через SimpleAdapter.
При выборе пункта в первом списке пункт остается подсвеченным, при выборе из второго списка пункт временно мигает но подсветка не остается.
В событии onListItemClick второго списка я могу определить какой пункт был выбран, но вот как подсветить его?
У списка принудительно задал режим работы setChoiceMode(ListView.CHOICE_MODE_SINGLE), может чего то еще не хватает?
В каком направлении двигаться, о чем необходимо почитать?
Re: Обновление фрагмента
в методе bindView адаптера списка нужно менять цвет пункта на нужный, остальные цвета сбрасывать в дефолтный. А чтоб его поменять нужно поле завести для того пункта (типа boolean), который отмечается.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Обновление фрагмента
Но вообще так в последних версиях андроида не рекомендуется - выделять пункты списков. Пользователь может список пролистнуть куда-нибудЬ и не будет видеть выделенный пункт, потом ченить сработает по логике программы, а пользователь будет репу чесать чей-то было.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Обновление фрагмента
Тогда как правильно это делать, если они не рекомендуют через bindView?
Re: Обновление фрагмента
не не рекомендуют через bindView, а не рекомендуют выделять элементы
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Обновление фрагмента
Только вот проблема еще в том что bindView это метод класса SimpleCursorAdapter, а я использую SimpleAdapter.
Создал у себя проект аналогичный "Урок 48. Используем SimpleAdapter".
Подправил его немного, удалил в шаблоне CheckBox и ссылку на него при создании адаптера.
Эффект тот же самый, что и у меня. Элементы подсвечиваются только на в момент нажатия, но вот после снова меняют цвет.
Вопрос знатокам: а SimpleAdapter вообще предусматривает поведение аналогичное обычному списку?
Может я не тот адаптер использую?
Создал у себя проект аналогичный "Урок 48. Используем SimpleAdapter".
Подправил его немного, удалил в шаблоне CheckBox и ссылку на него при создании адаптера.
Эффект тот же самый, что и у меня. Элементы подсвечиваются только на в момент нажатия, но вот после снова меняют цвет.
Вопрос знатокам: а SimpleAdapter вообще предусматривает поведение аналогичное обычному списку?
Может я не тот адаптер использую?
Re: Обновление фрагмента
адаптер нужно писать свой, естественно
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Обновление фрагмента
используйте BaseAdapter для обычных данных и SimpleCursorAdapter для курсоров
R.id.team
Политика на форуме запрещена
Политика на форуме запрещена