addTextChangedListener для сохранения нового объекта

У меня есть listView с некоторым textView и одним editText. Я бы сохранил новый объект, когда пользователь изменяет значение editText. Я реализовал TextWatcher, но не могу получить значения определенного textView, которые ссылаются на измененный editText. Кто-нибудь мне поможет?

ИЗМЕНИТЬ

TextWatcher для определенной строки listView

quantity.addTextChangedListener(new TextWatcher() {
@Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {


    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count,
            int after) {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterTextChanged(Editable s) {
        if(!s.toString().isEmpty()){ 
            if (Integer.parseInt(s.toString())!=0){


                HashMap<Products, Integer> into = new HashMap<Products, Integer>();

                Products pr = new Products();
                            //product contains value of textView 
                pr.set_id(Integer.parseInt(product.get("id")));
                pr.setNome(product.get("nome"));
                into.put(pr, Integer.parseInt(s.toString()));
                pArrayList.add(into);
                cart.setProdotti(pArrayList);
            }
        }
    }
}

person Claudio Pomo    schedule 01.10.2012    source источник
comment
Не могли бы вы поделиться своим кодом для добавления textWatcher?   -  person Jens Andersson    schedule 01.10.2012
comment
В afterTextChanged() вы хотите получить значение разных TextView? Извините, но я не очень понимаю ваш вопрос...   -  person Jens Andersson    schedule 01.10.2012
comment
У меня есть listView с большим количеством продуктов, и для каждого из них у меня есть 3 TextView: имя, цена, описание. Теперь я добавляю editText. Когда я изменяю этот editText, я сохраняю экземпляр нового объекта. Моя проблема заключается в извлечении значений textView в TextWatcher   -  person Claudio Pomo    schedule 01.10.2012
comment
Вам нужно присвоить уникальный идентификатор каждому TextView, затем в afterTextChanged() вы можете получить значение textView, вызвав findViewById() для каждого идентификатора.   -  person Jens Andersson    schedule 01.10.2012
comment
Добавлен пример кода. Дайте мне знать, если я неправильно вас понял, Клаудио.   -  person Jens Andersson    schedule 01.10.2012


Ответы (2)


Может быть, это немного излишне, но вы можете использовать в каждой строке метод setTag() для View для TextView и EditText, чтобы оба View были каким-то образом связаны этим ключом. Затем вам нужно только вызвать findViewByTag(). Эта операция немного затратна, поэтому обязательно вызывайте ее только тогда, когда пользователь перестанет писать.

person Warlock    schedule 01.10.2012
comment
мой список содержит много продуктов, это решение, я думаю, не самое лучшее - person Claudio Pomo; 01.10.2012

person    schedule
comment
это нормально, но я бы получил HashMap‹String, String›, переданный в arrayadapter, и использовал это в своем TextWatcher, потому что не все значения в HashMap используются для представления - person Claudio Pomo; 01.10.2012