Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
#1

Удаление данных из кастомного ArrayList - Android

26.12.2014, 14:22. Просмотров 394. Ответов 6
Метки нет (Все метки)

Всем привет, тут столкнулся с такой проблемой, я создаю динамически елементы

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
final View view = getLayoutInflater().inflate(R.layout.edittext_layout, null);
                ImageButton deleteField = (ImageButton) view.findViewById(R.id.deleteField);
                text = (AutoCompleteTextView) view.findViewById(R.id.whereEditText);
                text.setOnClickListener(OrderTaxiActivity.this);
                allEds.add(view);
                linear.addView(view);


Паралельно с этим я записываю данные в ArrayList<CoordsUtils>, вот код класса CoordsUtils
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public class CordsUtils implements Serializable {
    public int id;
    public double latitude;
    public double longitude;
    public String address;
 
    public CordsUtils() {
        super();
    }
 
    public void setLatitude(double lat) {
        this.latitude = lat;
    }
 
    public void setLongitude(double longitude) {
        this.longitude = longitude;
    }
 
    public void setAddress(String address) {
        this.address = address;
    }
 
    public void setId(int id) {
        this.id = id;
    }
 
    public double getLatitude() {
        return latitude;
    }
 
    public double getLongitude() {
        return longitude;
    }
 
    public String getAddress() {
        return address;
    }
 
    public int getId() {
        return id;
    }


По евенту в асинк таске я закидываю туда данные.

Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
CordsUtils coords = new CordsUtils();
                    coords.setId(View.generateViewId());
                    coords.setLatitude(detailedEmpireStateBuilding.getLatitude());
                    coords.setLongitude(detailedEmpireStateBuilding.getLongitude());
                    coords.setAddress(params[0]);
                    points.add(coords);


А теперь у меня стоит задача по удалению елемента из динамически созданного layout код которого я привел выше, удалить елемент соответствующий айдишнику в ArrayList<CoordsUtils>.

Как мне такое можно сделать?

Вот так я удаляю сам леяут по клику на кнопку в нем, а как удалить соответствущие ему данные из массива?
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
deleteField.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        try {
                            ((LinearLayout) view.getParent()).removeView(view);
                            points.remove(WHAT??);
                        } catch(IndexOutOfBoundsException ex) {
                            ex.printStackTrace();
                        }
                    }
                });
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2014, 14:22     Удаление данных из кастомного ArrayList
Посмотрите здесь:

ArrayList Android
Android Создание кастомного View "Матрица"
Android NoClassDefFoundError при запуске кастомного видеоплеера
ArrayList Android
Android Работа с ArrayList
Динамическое создание кастомного layout Android
Android Фильтрация ArrayList
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
androbro
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 826
26.12.2014, 14:42     Удаление данных из кастомного ArrayList #2
dajver, как мне представляется надо каждый deleteField связать с соответствующим CordsUtils по id, который где то (в адаптере), надо установить в deleteField.setTag.
А потом просто получать Tag и в ArrayList удалять запись соответствующую тэгу.
ИМХО не знаю насколько это реализуемо в Вашем случае.
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
26.12.2014, 15:21     Удаление данных из кастомного ArrayList #3
А вообще не правильно вот так вот ручками удалять view, а потом чистить данные. По хорошему нужно удалить данные, вызвать метод, который отвечает за отрисовку этих данных, в этом методе либо полностью все перерисовать, либо удалить/добавить те элементы которые изменились в данных.
androbro
319 / 279 / 55
Регистрация: 17.10.2014
Сообщений: 826
26.12.2014, 16:18     Удаление данных из кастомного ArrayList #4
это верно, над notifyDataSetChanged() вызвать да и все)
Spelcrawler
523 / 493 / 111
Регистрация: 12.03.2014
Сообщений: 1,646
Завершенные тесты: 1
26.12.2014, 17:23     Удаление данных из кастомного ArrayList #5
androbro, я так понимаю dajver использует не ListView.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
26.12.2014, 17:50     Удаление данных из кастомного ArrayList #6
Поддержу вариант androbro.

В коде, там где вы связываете final View view с значениями объектов класса CoordsUtils "назначайте" этому final View view метку (tag) со значением id соответствующего объекта CoordsUtils.

Схематически,
Java
1
view.setTag(CordsUtils.getId());
При удалении final View view достаёте значение его метки, ищете элемент массива ArrayList<CoordsUtils> с соответствующим id и удаляете его.

Схематически
Java
1
2
if (ArrayList[i].getId()==view.getTag())
   ArrayList.remove(i);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2014, 12:47     Удаление данных из кастомного ArrayList
Еще ссылки по теме:

Создание кастомного календаря с динамическими данными Android
Сортировка в ArrayList Android
Выделить строку кастомного списка при нажатии на нее Android
Какой адаптер нужен для кастомного ExpandableListView Android
Android arrayList Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
dajver
407 / 271 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
27.12.2014, 12:47  [ТС]     Удаление данных из кастомного ArrayList #7
В принципе советы верные все, это реализуемо, но у меня возникла другая проблема, если редактируют данные в поле ввода то появляются лишние координаты, и поэтому я изменил алгоритм записи просто что теперь запись в массив происходит по клику и я пишу данные только перед отправкой...

я так понимаю dajver использует не ListView.
Верно, я динамически создаю вьюхи, никакого листвью.

Всем спасибо помощь.
Yandex
Объявления
27.12.2014, 12:47     Удаление данных из кастомного ArrayList
Ответ Создать тему
Опции темы

Текущее время: 09:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru