当点击EditText,键盘弹出会使得ListView重新调用getView()方法,EditText在此时会失去焦点。我们只需要在getView()方法中保存点击的EditText位置,并让EditText重新获取到焦点就可以。
private currentEditPosition = -;//
@Override
public View getView(int position, View convertView, ViewGroup parent) {
viewHolder.editText.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch(event.getAction()){
case MotionEvent.ACTION_UP:
currentEditPosition = position;
break;
}
return false;
});
viewHolder.editText.clearFocus();
if (currentEditPosition == position) {
viewHolder.editText.requestFocus(); //重新获取焦点
viewHolder.editText.setSelection(viewHolder.editText.getText().length()); //设置光标位置
}
}