Добавить элемент в arraylist, если он еще не существует в списке - программирование
Подтвердить что ты не робот

Добавить элемент в arraylist, если он еще не существует в списке

Привет, у меня есть listview, показывающий 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;

Любые идеи?

4b9b3361

Ответ 1

У вас есть:

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), в зависимости от ваших требований к упорядочению/сортировке.