我在SeperatedListAdapter中有一些适配器。当我尝试修改适配器的数据时,我遇到IllegalStateException
。信息如下:
适配器的内容已更改,但ListView未收到 通知。确保未修改适配器的内容 来自后台线程,但仅来自UI线程。确保你的 适配器在其内容更改时调用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();
}
}
有人可以解释我错过了什么吗?
编辑:经过一些测试,我发现如果我暂停并恢复活动,列表确实会更新。但是,我仍然不确定在活动运行时我必须做些什么来更新它。答案 0 :(得分:0)
我终于找到了问题所在。在我的情况下,我想在我的适配器中添加一个额外的TextView而不将其添加到列表中,因此我将所需的金额添加到现有列表计数中。调用notifyDataSetChanged
时,将从列表中删除项指定项,但计数大小会导致类型转换异常。我已经删除了这一切,一切都按预期工作。