意圖:在包含edittext的listview內,點擊edittext獲取焦點並彈出軟鍵盤
結果:彈出軟鍵盤,但是緊跟着edittext也失去了焦點。
原因:在彈出和收起軟鍵盤的時候會導致listview的重繪,繼而導致edittext失去了焦點
解決思路:重新給listview內的edittext獲取焦點 requestFocus
1.在getview之前給點擊的edittext設置一個標識位
private Integer index = -1;
2.然後再listview適配器的getview的時候設置觸摸方法
holder.et_product_num.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
index = (Integer) v.getTag();
index_content = 2;
}
return false;
}
});
3.將點擊的位置賦值給index
然後再getview賦值的時候重新給原來的點擊位置賦予焦點
if(index!= -1 && index == position) {
// 如果當前的行下標和點擊事件中保存的index一致,手動爲EditText設置焦點。
holder.edt_product_price.requestFocus();
}