toxa_1995
@toxa_1995
Начинающий...

Как удалить из ArrayAdapter элемент??

Как можно удалить определенные данные из ArrayAdapter? По нажатию на items
/*Элементы активити*/
        final EditText name = findViewById(R.id.name);
        final EditText price = findViewById(R.id.price);
        final Button add = findViewById(R.id.add);
        final ListView items = findViewById(R.id.items);

/*отдельный класс с ArrayAdapter<Items>, Items - класс с атрибутами (String, String)*/
        final ItemsAdapter itemsAdapter = new ItemsAdapter(MainActivity.this, R.layout.item);
        items.setAdapter(itemsAdapter);

/*По нажатию забирает данные из edittext и передает в listview*/
        add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String sName = String.valueOf(name.getText());
                String sPrice = String.valueOf(price.getText());

                if (sName.length() != 0 && sPrice.length() != 0)
                    itemsAdapter.add(new Item(sName, sPrice));
                else
                    Toast.makeText(MainActivity.this, "Warning", Toast.LENGTH_SHORT).show();
            }
        });

items.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(final AdapterView<?> adapterView, View view, final int position, long l) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

                builder.setTitle("Remove");
                builder.setMessage("Удалить данную покупку?");

                builder.setPositiveButton("Да", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
/*сюда нужно написать удаление элемента из адаптера*/
                    }
                });

                builder.setNegativeButton("Отмена", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.cancel();
                    }
                });

                builder.show();
            }
        });


/*Вид полноценного приложения*/
5a82b4f0ba5d8551274079.png
  • Вопрос задан
  • 194 просмотра
Решения вопроса 1
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Вот такие вопросы - одна из причин, по которым не нужно использовать Array/Cursor/Whatever Adapter и ListView целиком.
Можешь по позиции взять элемент, и затем сделать adapter.remove().
Можешь сохранять в своём наследнике массив, и из него руками удалять этот элемент, полностью переаллоцируя память.
Можешь выкинуть arrayadapter и написать свой нормальный.
Можешь выкинуть listview вместе с адаптером и использовать RecyclerView(у него отсутствуют эти бредовые "простые" адаптеры, так что на эти грабли наступить будет сложнее). И это будет хорошо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы