Я знаю, что есть тонны ответов на SO для этого, но я не могу заставить его работать так, как хотелось бы. У меня есть SherlockFragment
, содержащий ListView
, который заполнен некоторыми данными, извлекаемыми из файла. Я добавил кнопку обновления в Fragment, идея состоит в том, что при нажатии на нее она извлекает любые изменения в файле и при необходимости добавляет их в представление. Я также добавил популярную библиотеку PullToRefresh.Обновить ListView в Фрагменте после перезагрузки данных
К сожалению, при перезагрузке фрагмента (например, при вращении устройства) ничего не меняется. Я вижу новые данные. Я читал о notifyDataSetChanged()
, но он не работает для меня. Единственное, что я получил работая звонит mPager.notifyDataSetChanged()
от моего основного класса FragmentActivity и имеющий следующий набор в моем ViewPager адаптер:
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
Это совершающего то, что я хочу, но это не очень гладкий об этом, и вы можете видеть, как это заставляет перезарядить. В настоящее время я использую PullToRefresh, и он резко отключает его от страницы, и, откровенно говоря, он просто выглядит плохо. Если честно, мне нужно позвонить onCreateView
моего фрагмента из моей AsyncTask, перезагружая данные.
При необходимости я отправлю код, их просто много, поэтому я не хочу публиковать ничего лишнего.
О, и, пожалуйста, обратите внимание, что я пробовал notifyDataSetChanged()
в onPostExecute()
моей задачи.
Спасибо за любые рекомендации.
может быть, вы могли бы использовать 'Observer Pattern', где ваш фрагмент является слушателем и субъект является вашим AsyncTask, почти так же, как вы это сделали, но более изящным способом, и, может быть, просто, может быть, вы не увидите перезагрузку принуждения (я не уверен в этом). – JosephChilberry
@JosephChilberry Это довольно неприятная проблема, я нашел решение менее заметным (см. Ниже через минуту), но он все еще не идеален. – whitfin