如何从EditText的OnFocusChange获取TextView值

时间:2015-08-01 14:16:37

标签: android android-layout android-activity

我是android新手。我在下面的案例中受到了抨击。我尝试将listview与组合的TextView,EditText(如

)绑定在一起
ItemId   ItemPrice Quantity
----------------------------
TextView TextView  EditText
TextView TextView  EditText

在第一行编辑EditText时,我可以获得EditText的编辑文本onFocusChange。即使我已经获得了该行的ItemId的TextView值。 我怎么能得到它。

viewHolder.etItemQuantity.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(!hasFocus){
            HashMap<Integer, String> updatedQuantity = new HashMap<Integer, String>();
            Integer itemIndex = v.getId();
            String enteredQuantity = ((EditText)v).getText().toString();

            updatedQuantity.put(itemIndex, enteredQuantity);
            editedQuantityList.add(updatedQuantity);

            ((EditText)v).setText(enteredQuantity);
         }
     }
}); 

1 个答案:

答案 0 :(得分:1)

因为我看到你在ViewHolder中有你的EditText,所以我假设你也有TextView。在这种情况下,您可以在回调中引用它。

viewHolder.getItemQuantity.setOnFocusChangeListener(new View.OnFocusChangeListener() {
                    @Override
                    public void onFocusChange(View v, boolean hasFocus) {
                        if(!hasFocus){
                            ...
                            viewHolder.mTextView.setText("some text");
                        }
                    }
                }); 

如果没有,我猜你可以对你的布局结构做一些假设。就像获取EditText的父级(您可以创建自定义布局)并让它在适当的TextView上设置值。类似的东西:

public class MyLayout extends LinearLayout
{
    TextView mTextView;
    EditText mEditText;
    public setTextViewText(String text)
    {
        mTextView.setText(text);
    }
}

从您的EditText回调中,您可以使用它:

((MyLayout)editText.getParent()).setTextViewText(...);

当然,还有更多(类型)检查。并且它还假设您的EditText是MyLayout的直接子项。