Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
1

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

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

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

Кликните здесь для просмотра всего текста
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();
                        }
                    }
                });
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.12.2014, 14:22
Ответы с готовыми решениями:

Получение данных из чужого datagridview и кастомного контрола
Уважаемые форумчане может кто подскажет как это сделать - хотелось бы организовать взаимодействие...

Удаление объекта из ArrayList
Здравствуйте! У меня есть класс,c следующими полями class Sportsmen { ...

Удаление из ArrayList дубликатов
нагуглил такой способ ArrayList&lt;testBean&gt; myList = new ArrayList&lt;testBean&gt;(); ...

Удаление элемента из ArrayList
Доброго времени суток, уважаемые форумчане! Возникла проблема в процессе написания одного...

6
393 / 338 / 83
Регистрация: 17.10.2014
Сообщений: 1,007
26.12.2014, 14:42 2
dajver, как мне представляется надо каждый deleteField связать с соответствующим CordsUtils по id, который где то (в адаптере), надо установить в deleteField.setTag.
А потом просто получать Tag и в ArrayList удалять запись соответствующую тэгу.
ИМХО не знаю насколько это реализуемо в Вашем случае.
1
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
26.12.2014, 15:21 3
А вообще не правильно вот так вот ручками удалять view, а потом чистить данные. По хорошему нужно удалить данные, вызвать метод, который отвечает за отрисовку этих данных, в этом методе либо полностью все перерисовать, либо удалить/добавить те элементы которые изменились в данных.
1
393 / 338 / 83
Регистрация: 17.10.2014
Сообщений: 1,007
26.12.2014, 16:18 4
это верно, над notifyDataSetChanged() вызвать да и все)
1
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
26.12.2014, 17:23 5
androbro, я так понимаю dajver использует не ListView.
1
210 / 210 / 60
Регистрация: 22.08.2014
Сообщений: 644
26.12.2014, 17:50 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);
1
411 / 275 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
27.12.2014, 12:47  [ТС] 7
В принципе советы верные все, это реализуемо, но у меня возникла другая проблема, если редактируют данные в поле ввода то появляются лишние координаты, и поэтому я изменил алгоритм записи просто что теперь запись в массив происходит по клику и я пишу данные только перед отправкой...

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

Всем спасибо помощь.
0
27.12.2014, 12:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2014, 12:47
Помогаю со студенческими работами здесь

Групповое удаление объектов в ArrayList
Нужно реализовать такое удаление, а как - вообще не догадываюсь. Пообъектно - да, но все сразу не...

ArrayList<Integer> удаление элемента
Как удалить элемент из списка Integer? Почему то нет метода remove()...

Удаление элементов списка ArrayList
Пытаюсь удалить из списка из 20 элементов все значения, что делятся на 2 и, соответственно, вывести...

Удаление повторяющихся элементов в ArrayList
В цикле с помощью Add добавляю строки в массив ArrayList ArrayList temp = new ArrayList(); ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru