listview內的edittext調出來鍵盤後,edittext失去焦點問題

意圖:在包含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();

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章