ListView在onCreate中添加两次项目

时间:2013-06-21 08:35:14

标签: android android-listview

在我的MasterDetail Flow中,我调用此函数来创建我的列表:

public class Ansicht extends SherlockFragmentActivity
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        //...
        ListItems.setupMainItems(this);
        //...
    }
}

public class ListItems 
{
    public static List<DetailListItem> ITEMS = new ArrayList<DetailListItem>();
    public static Map<String, DetailListItem> ITEM_MAP = new HashMap<String, DetailListItem>();

    public static void addItem(String value, Typ t) 
    {
        DetailListItem item = new DetailListItem(value, t);

        ITEMS.add(item);
        ITEM_MAP.put(item.id, item);
    }

    //...
}

public class ListControl extends SherlockListFragment
{
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        adapter = new ArrayAdapter<ListItems.DetailListItem>(getSherlockActivity(), R.layout.simple_listitem, android.R.id.text1,ListItems.ITEMS);

        setListAdapter(adapter);
    }

    //...
}

但是,如果我关闭我的应用并再次启动它,则会再次插入项目。我想我不必在onCreate中调用这个函数,但这个image并没有真正帮助我,因为onCreate是第一个被调用的方法。

在我的setupMainItems方法中,我只调用addItem方法。 onPauseonResume永远不会被覆盖。如果我使用homebutton关闭我的应用程序,一切都很好,但是如果我用后退按钮关闭它,则会再次插入项目。

1 个答案:

答案 0 :(得分:1)

您可以执行类似

的操作
if(ListItems.ITEMS == null || ListItems.ITEMS.size() == 0)
    ListItems.setupMainItems(this);

这样它只会添加尚未添加的项目