首页 > 代码库 > ListView中弹出软键盘时,EditText失去焦点的问题
ListView中弹出软键盘时,EditText失去焦点的问题
问题描述: 在ListView中,点击EditText获得焦点时,会重新调用getView,此时EditText会失去焦点。
方案:
定义一个全局的mCurrentIndex,记录刷新前是哪一项被点击量。给EdtiText设置onTouchListener,在这里设置mCurrentIndex的值。然后在
getView里面进行判断,如果是之前的选中项,设置它的焦点。看代码
1 // 定义变量,记录刷新前获得焦点的EditText所在的位置 2 int mCurrentTouchedIndex = -1; 3 4 // 在getView中进行判断 5 public View getView(int position, View convertView, Viewgroup parent) { 6 ... 7 // 设置触摸事件(别想着用OnClickListener) 8 focusEt.setOnTouchListener(new OnEditTextTouched(position)); 9 focusEt.clearFocus();10 if (position == mCurrentTouchedIndex) {11 // 如果该项中的EditText是要获取焦点的12 focusEt.requestFocus();13 }14 return convertView;15 }16 17 // ListView中EditText的触摸事件18 private class OnEditTextTouched implement OnTouchListener {19 private int position;20 21 public OnEditTextTouched(int position) {22 this.position = position;23 }24 25 @override26 public boolean onTouch(View v, MotionEvent event) {27 if (event.getAction() == MotionEvent.ACTION_UP) {28 mCurrentTouchedIndex = position;29 }30 return false;31 }32 }
ListView中弹出软键盘时,EditText失去焦点的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。