[Android] Работы с кастомным ListView
От: montalvo  
Дата: 12.01.12 14:26
Оценка:
День добрый

Имеется у меня кастомный ListView, каждый элемент которого состоит из EditText и кнопки

Есть кастомный же ArrayAdapter, связанный с данным ListView, и ArrayList<EditText>:
private ArrayList<EditText> m_edit = null;
private EditAdapter m_adapter;
private class EditAdapter extends ArrayAdapter<EditText>

При добавлении в ListView нового элемента, так же обновляю ArrayList таким образом: m_edit.add(et); (et — экземпляр EDitText)

Здесь все хорошо

Что хочу сделать:
1. Предоставить пользователю возможность вводить произвольные данные в EditText элементов ListView — с этим вроде бы проблем нет
2. Обновлять этими данными соответствующие элементы связанного ArrayList — вот здесь проблема. Совсем не понимаю как это сделать.
П. 2 нужен, чтобы потом все введенные данные из ListView сохранить в БД. Если есть способ, как этом можно сделать, не обращаясь к ArrayList — буду рад услышать совет

Заранее спасибо за помощь
android listview
Re: [Android] Работы с кастомным ListView
От: Young yunoshev.ru
Дата: 12.01.12 19:27
Оценка:
Здравствуйте, montalvo, Вы писали:

M>День добрый


M>Имеется у меня кастомный ListView, каждый элемент которого состоит из EditText и кнопки


M>Есть кастомный же ArrayAdapter, связанный с данным ListView, и ArrayList<EditText>:

M>private ArrayList<EditText> m_edit = null;
M>private EditAdapter m_adapter;
M>private class EditAdapter extends ArrayAdapter<EditText>

M>При добавлении в ListView нового элемента, так же обновляю ArrayList таким образом: m_edit.add(et); (et — экземпляр EDitText)


M>Здесь все хорошо


M>Что хочу сделать:

M>1. Предоставить пользователю возможность вводить произвольные данные в EditText элементов ListView — с этим вроде бы проблем нет
M>2. Обновлять этими данными соответствующие элементы связанного ArrayList — вот здесь проблема. Совсем не понимаю как это сделать.
M>П. 2 нужен, чтобы потом все введенные данные из ListView сохранить в БД. Если есть способ, как этом можно сделать, не обращаясь к ArrayList — буду рад услышать совет

M>Заранее спасибо за помощь


Честно говоря не очень понял задачу, не совсем понятно. Но могу предположить — каждый раз когда вы добавляете в список EditText вешайте ему ваш обрабочик куда передавайте id этого EditText или его самого ка ключ — при изменения текста сразу его обновляйте в кэше (просто хэшмапа в качестве ключа переданное значение) — потом когда нужно сохранить сразу пробегайтесь по хэмапе — получите только значения которые менялись. Если хотите чтобы были все — при добавлении иницилизируйте мапу.

Оно?
Re[2]: [Android] Работы с кастомным ListView
От: montalvo  
Дата: 13.01.12 06:15
Оценка:
Здравствуйте, Young, Вы писали:
Y>Честно говоря не очень понял задачу, не совсем понятно. Но могу предположить — каждый раз когда вы добавляете в список EditText вешайте ему ваш обрабочик куда передавайте id этого EditText или его самого ка ключ — при изменения текста сразу его обновляйте в кэше (просто хэшмапа в качестве ключа переданное значение) — потом когда нужно сохранить сразу пробегайтесь по хэмапе — получите только значения которые менялись. Если хотите чтобы были все — при добавлении иницилизируйте мапу.

Y>Оно?

Спасибо за отклик.
HashMap скорее всего подойдет для хранения данных

Но, я все-таки попробую свою проблему немного переформулировать:
Я не знаю как сделать обработку события изменения текста в EditText, который является элементом ListView.
Т.е. как вариант — по нажатию какой-нить кнопки, можно пробежаться по всему ListView и просто скопировать из него значения EditText. Однако, хотелось бы без необходимости нажатия кнопки. вот
Re[3]: [Android] Работы с кастомным ListView
От: Young yunoshev.ru
Дата: 13.01.12 06:22
Оценка:
Здравствуйте, montalvo, Вы писали:

M>Но, я все-таки попробую свою проблему немного переформулировать:

M>Я не знаю как сделать обработку события изменения текста в EditText, который является элементом ListView.
M>Т.е. как вариант — по нажатию какой-нить кнопки, можно пробежаться по всему ListView и просто скопировать из него значения EditText. Однако, хотелось бы без необходимости нажатия кнопки. вот


et_name.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
});


Оно?
Re[4]: [Android] Работы с кастомным ListView
От: montalvo  
Дата: 18.01.12 14:03
Оценка:
Здравствуйте, Young, Вы писали:

Y>Здравствуйте, montalvo, Вы писали:


M>>Но, я все-таки попробую свою проблему немного переформулировать:

M>>Я не знаю как сделать обработку события изменения текста в EditText, который является элементом ListView.
M>>Т.е. как вариант — по нажатию какой-нить кнопки, можно пробежаться по всему ListView и просто скопировать из него значения EditText. Однако, хотелось бы без необходимости нажатия кнопки. вот


Y>
Y>et_name.addTextChangedListener(new TextWatcher() {
Y>public void afterTextChanged(Editable s) {}
Y>public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
Y>public void onTextChanged(CharSequence s, int start, int before, int count) {}
Y>});
Y>


Y>Оно?


ну вот мне как-то нужно сделать такой обработчик для EditText, который является частью элемента кастомного ListView.

Т.е. как повесить обработку события на обычный EditText — я понимаю, а вот как повесить обработку такого же события на EditText -член элемента ListView — уже проблема
Re: [Android] Работы с кастомным ListView
От: montalvo  
Дата: 18.01.12 15:13
Оценка:
В общем-то ответом на мой вопрос является использование TextWatcher и его методов
public void afterTextChanged(Editable Text)
public void beforeTextChanged(CharSequence s, int start, int count, int after)
public void onTextChanged(CharSequence s, int start, int before, int count)


Сам обработчик засунул в кастомный arrayAdapter, на который настроен мой кастомный ListView, в класс
public View getView(int position, View convertView, ViewGroup parent) следующим образом:

TextWatcher watcher = new categoryTextWatcher();
et.addTextChangedListener(watcher);

где et — тот самый EditText
Re[2]: [Android] Работы с кастомным ListView
От: Аноним  
Дата: 06.05.12 10:52
Оценка:
Здравствуйте, montalvo, Вы писали:

M>В общем-то ответом на мой вопрос является использование TextWatcher и его методов

M> public void afterTextChanged(Editable Text)
M> public void beforeTextChanged(CharSequence s, int start, int count, int after)
M> public void onTextChanged(CharSequence s, int start, int before, int count)


M>Сам обработчик засунул в кастомный arrayAdapter, на который настроен мой кастомный ListView, в класс

M>public View getView(int position, View convertView, ViewGroup parent) следующим образом:

M>TextWatcher watcher = new categoryTextWatcher();

M>et.addTextChangedListener(watcher);

M>где et — тот самый EditText


Не могли бы Вы привести код приложения? Меня интересует адаптер для EditText и подключение TextWatcher.
Столкнулся с аналогичной проблемой, но не могу подключить объект EditText к списку.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.