为什么我的ListView没有显示新数据?

时间:2014-04-30 16:57:51

标签: android listview

我的问题是,我有一个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;

}

1 个答案:

答案 0 :(得分:2)

您必须通过ArrayAdapter.add()方法在.addAll()对象上添加商品。这实际上会将您提供的对象作为参数附加到已经显示的数据集中。

adapter.add(...);
adapter.addAll(...);

并且(正如您所做的那样),不要忘记在向其添加项目后始终在适配器上调用.notifyDataSetChanged()