我使用List Adapter(扩展SimpleCursorAdapter)来填充一些数据。
我在bindView中调用View.SetOnFocusChangeListener,我将侦听器附加到所需的EditText。问题是该事件被触发4次,最终EditText失去它的焦点,直到我再次点击事件被触发3次并且EditText保持焦点。
我认为它应该只调用一次。 OnTouch事件是否对此负责?
这是我的代码:
@Override
public void bindView(View view, Context context, Cursor cursor) {
view.setId(cursor.getPosition());//Setting the row id to the corresponding cursor row id for easier data manipulation
super.bindView(view, context, cursor);
EditText etItemQuantity = (EditText)view.findViewById(R.id.etItemQuantity);
if(!isNumeric(etItemQuantity.getText().toString())) {
etItemQuantity.setFocusable(false);
etItemQuantity.setFocusableInTouchMode(false);
etItemQuantity.setClickable(false);
} else {
etItemQuantity.setFocusable(true);
etItemQuantity.setFocusableInTouchMode(true);
etItemQuantity.setClickable(true);
etItemQuantity.setOnFocusChangeListener(ofcl);
etItemQuantity.setOnEditorActionListener(oeal);
}
}
@Override
public View newView(Context context, Cursor cursor, ViewGroup parent) {
View view = inflater.inflate(layout, null);
return view;
}
View.OnFocusChangeListener ofcl = new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!(v instanceof EditText)) {
return;
}
EditText tableEt = (EditText)v;
if(hasFocus) {
tableEt.setTag(tableEt.getText().toString());
tableEt.setText("");
} else {
if(tableEt.getText().toString().equals("")) {
tableEt.setText(tableEt.getTag().toString());
tableEt.setTag(null);
}
}
}
};
答案 0 :(得分:0)
在清单中添加以下行我的活动修复了问题:
android:windowSoftInputMode="adjustPan"
不确定为什么。