addTextChangedListener用于保存新对象

时间:2012-10-01 18:22:38

标签: android android-listview android-edittext textwatcher

我有一个带有一些textView和一个editText的listView。当用户修改editText的值时,我会保存一个新对象。我实现了一个TextWatcher,但是我无法检索特定textView的值,这些值引用了editText修改过。有人帮帮我吗?

修改

特定行listView的TextWatcher

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);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

<TextView android:id="@+id/p1_name"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="Product 1" />
<TextView android:id="@+id/p1_price"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:text="20" />


public void afterTextChanged(Editable s) {
    ...
    String price = ((TextView) findViewById(R.id.p1_price)).getText();
    ...
}

答案 1 :(得分:0)

也许它有点矫枉过正,但你可以在每个行setTag()方法中使用View for TextView和EditText,这样两个视图就可以通过这个键以某种方式连接起来。然后你只需要调用findViewByTag()。此操作有点贵,因此请务必在用户停止写入时调用它。