原因:点击edittext弹出键盘,导致listview重绘
解决:
1.不能弹出输入框问题:
给listview设置属性:android:descendantFocusability="afterDescendants"
2.edittext第一次不能获得焦点问题:
既然焦点丢失是因为ListView的重绘导致的,那我们就可以定义一个变量mTouchItemPosition来记录用户触碰的EditText的位置,然后在getView方法中去判断当前的position是否和用户触碰的位置相等,如果相等则让其获得焦点,否则清除焦点。而mTouchItemPosition的值可以在EditText的OnTouch事件中获取。
//解决listview中Edittext焦点问题
holder.goodsNumEt.setTag(pos);
holder.goodsNumEt.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { mNumEtPos = view.getTag(); return false; }});holder.goodsNumEt.setText(item.nums);if (mNumEtPos == pos) { holder.goodsNumEt.requestFocus(); holder.goodsNumEt.setSelection(holder.goodsNumEt.getText().length());} else { holder.goodsNumEt.clearFocus();}