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

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

Войти через TM ID
Похожие вопросы
Blogman Оренбург
от 20 000 до 110 000 руб.
от 80 000 до 120 000 руб.
21 июля 2018, в 15:34
6000 руб./за проект
21 июля 2018, в 15:32
1000 руб./за проект