如果列表中尚不存在,则将项添加到arraylist

时间:2014-03-02 20:26:14

标签: java android

您好我有一个列表视图显示一个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;

有什么想法吗?

1 个答案:

答案 0 :(得分:17)

你有:

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

您正在检查itemsListVMiPedido是否包含整数position,但您要将itemsListVMenuVINOSespumosos.get(position)添加到列表中。你需要检查列表是否包含 item ,而不是索引(想想它与你想要做的完全一样:“如果列表已经包含 item <,请不要将项目添加到列表中/ em>)。您可能意味着这样的事情(我只是编造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),具体取决于您的订购/排序要求。