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

Emm*_*her 15 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;
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Jas*_*n C 18

你有:

if (MiPedidoActivity.itemsListVMiPedido.contains( position)){}
    else
MiPedidoActivity.itemsListVMiPedido.add(itemsListVMenuVINOSespumosos.get(position));
Run Code Online (Sandbox Code Playgroud)

您正在检查是否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);
}
Run Code Online (Sandbox Code Playgroud)

顺便提一下,作为建议,如果您的项目类已经equals()并且已hashCode()正确实施,请考虑a LinkedHashSet(这将保留插入顺序但不允许重复).还有其他Set实现也可能有用(例如,TreeSet如果您的项目实现Comparable),具体取决于您的订购/排序要求.

  • 非常感谢,不仅给了我问题的答案,还教会我理解新的东西. (2认同)