2014-03-02 51 views
10

您好我有一個顯示一個ArrayList列表視圖,單擊時,將項目被添加到另一個ArrayList和另一活動顯示。我的問題是什麼?我希望如果一個項目(例如一隻狗)接觸一次,就會被添加到第二項活動中,並顯示出來。但如果我要觸摸該項目(狗)不會再次添加。添加物品到ArrayList中,如果它不已經在列表中存在

我們要說的是,我要檢查它是否存在,而不是增加。

我一直如此,但沒有成功。

if (page2 == null) 
{ 
    page2 = (ListView) LayoutInflater.from(Local_mostrar_bebidaActivity.this).inflate(R.layout.page_two_viewpager_listview, null); 
    page2.setAdapter(adapterlistvMenuVINOSespumosos); 
    page2.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
      if (MiPedidoActivity.itemsListVMiPedido.contains(position)){} 
      else 
       MiPedidoActivity.itemsListVMiPedido.add(itemsListVMenuVINOSespumosos.get(position)); 

     }}); 
    } 
    page = page2; 
    break; 

任何想法?

回答

12

您有:

if (MiPedidoActivity.itemsListVMiPedido.contains(position)){} 
    else 
MiPedidoActivity.itemsListVMiPedido.add(itemsListVMenuVINOSespumosos.get(position)); 

您檢查是否itemsListVMiPedido是整數,position,但要添加itemsListVMenuVINOSespumosos.get(position)到列表中。你需要檢查,如果列表中包含他們項目,而不是指數(認爲它完全像你正在嘗試做的事:「不添加項目到列表中,如果列表中已經包含項目)。你大概意思是這樣這(我只是做了Item例如,使用任何類的對象):

Item item = itemsListVMenuVINOSespumosos.get(position); 
if (MiPedidoActivity.itemsListVMiPedido.contains(item)) { // <- look for item! 
    // ... item already in list 
} else { 
    MiPedidoActivity.itemsListVMiPedido.add(item); 
} 

順便說,作爲一個建議,如果你的項目類有equals()hashCode()正確實施,考慮LinkedHashSet(這將保持插入順序,但不會允許一式兩份)。還有其它Set實現,可能太有用(例如TreeSet如果您的項目實施Comparable),取決於您的訂購/分揀要求。

+2

非常感謝你,不僅給我的回答我的問題,還教我瞭解新的東西。 –

相關問題