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();

}

你可能感兴趣的:(Android,listview,edittext)