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