轉自:http://www.cnblogs.com/haofei/p/3305030.html
在ListView中,每次彈出軟鍵盤后就會重新調用getView()方法,導致EditText失去焦點。
解決辦法:在getView()方法中添加監聽器:
editText.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
index = position;
}
return false;
}
});
並且在getView方法結束前為EditText添加焦點:
editText.clearFocus();
if (index != -1 && index == position) {
// 如果當前的行下標和點擊事件中保存的index一致,手動為EditText設置焦點。
editText.requestFocus();
}
但是這樣,又會有新的問題出現,EditText中的光標停在最前面,並且不閃動,點擊軟鍵盤輸入任何東西也不會在EditText中顯示,這樣,就要在EditText獲得焦點后再做一個處理:
editText.setSelection(editText .getText().length());
這樣,問題就很好的解決了。