您好我有一个列表视图显示一个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;
有什么想法吗?
答案 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
),具体取决于您的订购/排序要求。