ListView,适配器和选项卡

时间:2013-12-01 14:36:37

标签: android listview android-fragments adapter custom-adapter

我是一个Android初学者

我有使用FixedTabs + Swipe的活动。 每个选项卡里面都有一个ListView,我使用一个适配器来填充它,因为我使用的是自定义对象。

它有效,但每次我浏览标签时,内容都会被添加更多次。 例如: - 第一个标签显示A和B. 然后我导航到第二个,然后是第三个 - 当我回到第一个标签时,我看到A,B,A,B。

我教过用saveInstanceState解决但是我发现它不起作用,saveInstanceState总是为null 这是代码

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_categories_dummy, container, false);

    categoryListView = (ListView) rootView.findViewById(R.id.categoryListView);



    if (savedInstanceState != null) {
        category = savedInstanceState.getString("FRAGMENT_CATEGORY");
    } else {
        // Get the category
        switch (getArguments().getInt(ARG_SECTION_NUMBER) - 1) {
        case 0:
            category = "First";
            break;
        case 1:
            category = "Second";
            break;
        case 2:
            category = "Third";
            break;
        }
        getArrayList();
        categoryListView.setAdapter(new TweetsAdapter(getActivity(), R.layout.category_row, arrayList, getArguments().getInt(ARG_SECTION_NUMBER)));
    }

    return rootView;
}

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);

    savedInstanceState.putString("FRAGMENT_CATEGORY", category);
}

1 个答案:

答案 0 :(得分:2)

更改标签时,您忘记清除ArrayArrayList用于保存列表项的任何内容。我想,当您更改选项卡时,只需添加与该选项卡对应的列表的相关元素,但在再次向其添加新项目之前必须先清除它。否则,新项目将添加到旧项目列表中。这就是为什么,你看到旧物品。希望它有所帮助。