У меня есть некоторые адаптеры в интерфейсе SeperatedListAdapter. При попытке изменить данные для адаптера я столкнулся с IllegalStateException
. Сообщение выглядит следующим образом:Обновление набора данных адаптера из другого адаптера
Содержимое адаптера изменилось, но ListView не получил уведомление . Убедитесь, что содержимое вашего адаптера не изменено из фонового потока, но только из потока пользовательского интерфейса. Убедитесь, что ваш адаптер вызывает notifyDataSetChanged() при изменении его содержимого. [В ListView (16908298, класс android.widget.ListView) с адаптером (класс com.mytest.ListTest.Adapter.SeparatedListAdapter)]
я был под впечатлением, что метод notifyDataSetChanged
применяется только к адаптерам, что изменили свой набор данных, поэтому я не уверен, почему исключение ссылается на SeperatedListAdapter. Ниже мой текущий код:
ListFragment:
public class FragmentOne extends ListFragment {
@Override
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
SeparatedListAdapter sepList = new SeparatedListAdapter(getActivity());
sepList.addSection("List One", new CustomAdapter(getActivity()));
setListAdapter(sepList);
}
}
CustomAdapter:
public class CustomAdapter extends BaseAdapter {
private final List<String> data;
public CustomControllerAdapter(Context context) {
this.context = context;
data = new ArrayList<String>(((MainActivity) context).getList());
}
public void removeFromList(String name) {
data.remove(name);
notifyDataSetChanged();
}
public void addToList(String name) {
data.add(name);
notifyDataSetChanged();
}
}
Может кто-нибудь объяснить, что я не хватает?
EDIT: после некоторого тестирования я обнаружил, что если я приостанавливаю и возобновляю действие, список действительно обновляется. Тем не менее, я все еще не уверен, что мне нужно сделать, чтобы обновить его, пока работает.