将项添加到数组列表(如果它尚不存在于列表中)

2022-09-01 17:37:59

嗨,我有一个显示数组列表的列表视图,当单击一个项目时,它将添加到另一个数组列表中并显示在另一个活动中。我的问题是什么?我希望,如果我触摸过一次的物品(例如狗),则将其添加到第二个活动中,并且它显示出来。但是,如果我要触摸该项目(狗)不会再次添加。

我们会说我想检查它是否存在,而不是添加。

我试过,但没有成功。

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

你有:

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

您正在检查是否包含整数 ,但您正在添加到列表中。您需要检查列表是否包含它们,而不是索引(将其视为与您尝试执行的操作完全相同:“如果列表已包含项,则不要将项添加到列表中)。你可能的意思是这样的(例如,我只是编造的,使用你的对象是什么类):itemsListVMiPedidopositionitemsListVMenuVINOSespumosos.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);
}

顺便说一句,作为建议,如果您的项目类已经并正确实现,请考虑使用LinkedHashSet(它将保留广告订单,但不允许重复)。还有其他 Set 实现也可能有用(例如 如果您的商品实施),具体取决于您的订购/分拣要求。equals()hashCode()TreeSetComparable


答案 2

推荐