我是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);
}
}
});
答案 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的直接子项。