當點選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()); //設定光标位置
}
}