Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
#1

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

26.12.2014, 14:22. Просмотров 504. Ответов 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();
                        }
                    }
                });
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2014, 14:22
Ответы с готовыми решениями:

Как поместить в preferences arrayList типа: arraylist<Class>
Как поместить в preferences arrayList типа: arraylist&lt;Class&gt; Class содержит...

Динамическое создание кастомного layout
Всем здрасте. Столкнулся с такой проблемой. Стоит задача по нажатию на...

Доступ к содержимому элементов кастомного ListView
Есть у меня ListView Есть кастомный ListAdapter, который делает элементы аля...

NoClassDefFoundError при запуске кастомного видеоплеера
Всем привет! Являюсь iOS-разработчиком с некогда небольшим Android-прошлым....

Создание кастомного календаря с динамическими данными
Раз с одной проблемой мне тут помогли, значит попробую еще раз может и тут мне...

6
androbro
343 / 303 / 68
Регистрация: 17.10.2014
Сообщений: 897
26.12.2014, 14:42 #2
dajver, как мне представляется надо каждый deleteField связать с соответствующим CordsUtils по id, который где то (в адаптере), надо установить в deleteField.setTag.
А потом просто получать Tag и в ArrayList удалять запись соответствующую тэгу.
ИМХО не знаю насколько это реализуемо в Вашем случае.
1
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
26.12.2014, 15:21 #3
А вообще не правильно вот так вот ручками удалять view, а потом чистить данные. По хорошему нужно удалить данные, вызвать метод, который отвечает за отрисовку этих данных, в этом методе либо полностью все перерисовать, либо удалить/добавить те элементы которые изменились в данных.
1
androbro
343 / 303 / 68
Регистрация: 17.10.2014
Сообщений: 897
26.12.2014, 16:18 #4
это верно, над notifyDataSetChanged() вызвать да и все)
1
Spelcrawler
531 / 501 / 113
Регистрация: 12.03.2014
Сообщений: 1,666
Завершенные тесты: 1
26.12.2014, 17:23 #5
androbro, я так понимаю dajver использует не ListView.
1
Armagedo
209 / 209 / 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
dajver
410 / 274 / 22
Регистрация: 18.09.2010
Сообщений: 1,114
27.12.2014, 12:47  [ТС] #7
В принципе советы верные все, это реализуемо, но у меня возникла другая проблема, если редактируют данные в поле ввода то появляются лишние координаты, и поэтому я изменил алгоритм записи просто что теперь запись в массив происходит по клику и я пишу данные только перед отправкой...

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

Всем спасибо помощь.
0
27.12.2014, 12:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2014, 12:47

Создание кастомного адаптера и использование метода Startactivityforresult
Помогите пожалуйста, никак не могу решить данное задание. Сделать...

Какой адаптер нужен для кастомного ExpandableListView
Доброго дня. Мне нужно отобразить данные в виде сворачивающегося списка. Нашёл...

Выделить строку кастомного списка при нажатии на нее
Имеется кастомный ListView, строки у которого выводятся через TextView....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru