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

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

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

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

26.12.2014, 14:22. Просмотров 405. Ответов 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 (Программирование Android):

Как поместить в preferences arrayList типа: arraylist<Class> - Программирование Android
Как поместить в preferences arrayList типа: arraylist&lt;Class&gt; Class содержит вид: public class CountryClass { private String...

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

Доступ к содержимому элементов кастомного ListView - Программирование Android
Есть у меня ListView Есть кастомный ListAdapter, который делает элементы аля &quot;TextView - EditText&quot; В общем, тут всё круто, всё...

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

Создание кастомного календаря с динамическими данными - Программирование Android
Раз с одной проблемой мне тут помогли, значит попробую еще раз может и тут мне чем то помогут (: В общем проблема состоит в том что есть...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
androbro
325 / 285 / 60
Регистрация: 17.10.2014
Сообщений: 841
26.12.2014, 14:42 #2
dajver, как мне представляется надо каждый deleteField связать с соответствующим CordsUtils по id, который где то (в адаптере), надо установить в deleteField.setTag.
А потом просто получать Tag и в ArrayList удалять запись соответствующую тэгу.
ИМХО не знаю насколько это реализуемо в Вашем случае.
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
26.12.2014, 15:21 #3
А вообще не правильно вот так вот ручками удалять view, а потом чистить данные. По хорошему нужно удалить данные, вызвать метод, который отвечает за отрисовку этих данных, в этом методе либо полностью все перерисовать, либо удалить/добавить те элементы которые изменились в данных.
androbro
325 / 285 / 60
Регистрация: 17.10.2014
Сообщений: 841
26.12.2014, 16:18 #4
это верно, над notifyDataSetChanged() вызвать да и все)
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
26.12.2014, 17:23 #5
androbro, я так понимаю dajver использует не ListView.
Armagedo
208 / 208 / 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);
dajver
408 / 272 / 18
Регистрация: 18.09.2010
Сообщений: 1,108
27.12.2014, 12:47  [ТС] #7
В принципе советы верные все, это реализуемо, но у меня возникла другая проблема, если редактируют данные в поле ввода то появляются лишние координаты, и поэтому я изменил алгоритм записи просто что теперь запись в массив происходит по клику и я пишу данные только перед отправкой...

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
27.12.2014, 12:47
Ответ Создать тему
Опции темы

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