我的问题是,我有一个ListView和一个ArrayAdapter。现在我创建这样的适配器:
items = OtherClass.DataSet1;
adapter = new MyArrayAdapter(getActivity(), R.layout.mein_listitem, items);
然后我想更改项目,例如:
items = OtherClass.DataSet2;
adapter.notifyDataSetChanged();
但结果是,我仍然在ListView中看到DataSet1项,我不知道为什么。
我有以下完整代码:
public class PlaceholderFragment extends Fragment implements ActionBar.TabListener {
ArrayList<Item> items;
MyArrayAdapter adapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
items = OtherClass.DataSet1;
adapter = new MyArrayAdapter(getActivity(), R.layout.mein_listitem, items);
{...}
}
@Override
public void onTabSelected(Tab arg0, FragmentTransaction arg1) {
if (arg0.getText().equals(getText(R.string.foo))) {
items = OtherClass.DataSet1;
adapter.notifyDataSetChanged();
} else {
items = OtherClass.DataSet2;
adapter.notifyDataSetChanged();
}
}
}
public class Item {
public Item(String foo1) {
super();
Foo1 = foo1;
}
public String Foo1;
}
答案 0 :(得分:2)
您必须通过ArrayAdapter
或.add()
方法在.addAll()
对象上添加商品。这实际上会将您提供的对象作为参数附加到已经显示的数据集中。
adapter.add(...);
adapter.addAll(...);
并且(正如您所做的那样),不要忘记在向其添加项目后始终在适配器上调用.notifyDataSetChanged()
。