ListView 中含有 EditText 导致焦点丢失的问题
ListView 中的 item 中有 EditText 时。
如果activity的输入法选项设置为 android:windowSoftInputMode="adjustResize"
当点击一个EditText弹出输入法时时,会导致界面layout变化,导致 listview 重新调用getView刷新界面,各个itemView的状态会被清除,导致当前点击的EditText的焦点丢失,导致无法输入。
解决方法: 记住当前hasFocus的Edit的position,在getView的时候重新设置focus。
@Override
public View getView(int position, View convertView, ViewGroup parent) { Log.e("ss", "getView:" + position); View v = null;
ViewHolder vh = null;
if (convertView != null) {
v = convertView;
vh = (ViewHolder) v.getTag();
} else {
v = mInflater.inflate(R.layout.item, parent, false);
vh = new ViewHolder();
vh.infoTxt = (TextView) v.findViewById(R.id.info_txt);
vh.editTxt = (EditText) v.findViewById(R.id.edit_txt);
vh.editTxt.setOnFocusChangeListener(mListener);
v.setTag(vh);
} vh.editTxt.setTag(position);
vh.infoTxt.setText(position + ""); if (mFocusPosition == position) {
vh.editTxt.requestFocus();
} else {
vh.editTxt.clearFocus();
} return v;
} int mFocusPosition = -1; OnFocusChangeListener mListener = new OnFocusChangeListener() { @Override
public void onFocusChange(View v, boolean hasFocus) {
int position = (Integer) v.getTag();
if (hasFocus) {
mFocusPosition = position;
}
Log.e("test", "onFocusChange:" + position + " " + hasFocus);
}
};
ListView 中含有 EditText 导致焦点丢失的问题的更多相关文章
- ListView中含有EditText时候--要命的焦点问题迎刃而解
最近做项目的时候遇到了一个问题,就是在ListView的item上面含有一个EditText,要求是这样: 1当点击item的时候,item可以点击; 2当点击EditText的时候EditText也 ...
- [Android学习笔记]ListView中含有Button导致无法响应onItemClick回调的解决办法
转自:http://www.cnblogs.com/eyu8874521/archive/2012/10/17/2727882.html 问题描述: 当ListView的Item中的控件只是一些展示类 ...
- (转载)解决ListView中使用EditText所遇到的一些冲突
大家都知道在listView中使用editText,在输入过程中是有冲突的.今天稍微研究了一下这个问题,有一点点小小的心得和大家一起分享下. 首先建立一个最简单的demo,主界面就是一个ListVie ...
- android 自定义adapter和线程结合 + ListView中按钮滑动后状态丢失解决办法
adapter+线程 1.很多时候自定义adapter的数据都是来源于服务器的,所以在获取服务器的时候就需要异步获取,这里就需要开线程了(线程池)去获取服务器的数据了.但这样有的时候adapter的中 ...
- 关于ListView中包含EditText数据复用引起异常的解决方案
概述 前几天测试提了一个bug,在ListView中添加留言信息,导致错乱的问题.实际上就是ListView需要添加一个EditText,复用导致错乱的问题,这个问题以前也遇到过.诸如,ListVie ...
- 在ListView中添加EditText丢失光标问题解决
<ListView android:id="@android:id/list" android:layout_height="fill_parent& ...
- Android中使EditText失去焦点,edittext禁止弹出键盘[转]
转自http://www.cnblogs.com/yejiurui/archive/2013/01/02/2841945.html 在我们的应用中,有时候一进入一个页面, EditText默认就会自动 ...
- android ListView中含有按钮事件实时更新ListView数据案例
1.布局文件Listview <?xml version="1.0" encoding="utf-8"?> <android.support. ...
- 【Android】ListView中EditText焦点问题
一.描述: 近期一个项目中需要开发一种类似表格的界面来显示和配置参数,Android并无直接类似表格的控件支持,我采用了ListView中布局EditText和TextView来实现,其中TextVi ...
随机推荐
- yii2.0邮箱发送
邮件发送配置: 打开配置文件将下面代码添加到 components => [...]中(例:高级版默认配置在/common/config/main-local.php) 'mai ...
- "****" is not translated in zh, zh_CN.的解决方法
最近在开发一个app,要用到静默安装等一些小技术,但是引发了问题如下: 在Android SDK Tool r19之后, Export的时候遇到xxx is not translated in yyy ...
- 在CentOS上安装rabbitmq-server
***在 CentOS 6.4上安装python*** 注意啊,自己手动安装python2.7.5,不要动系统上面其他的版本 1,先安装GCC,用如下命令yum install gcc gcc-c++ ...
- C#字符串截取
.取前i个字符 ,i); string str1=str.Remove(i,str.Length-i); .去掉前i个字符 ,i); string str1=str.SubString(i); .从右 ...
- C++ 中堆栈学习
- 11——在operator=中处理自我赋值
在operator=函数中加一个测试: if(&rhs==this) copy and swap
- ASP.NET收发邮件
在.NET中常见到在线发邮件的实例,网站加上这个功能可以方便站长与用户的交流. NET 中发邮件有时候会用到IIS组件中的邮件服务器,不过复杂.对虚拟主机的配置也较麻烦, 也可用第三方组件比如Jmai ...
- PPP 转义字符 编码 和 解码
#include <stdio.h> #include <string.h> // PPP数据帧每一帧都以标识字符0x7E开始和结束: // 由于标识字符的值是0x7E,因此当 ...
- Matlab 2013b 在El Capitan 中无法使用问题解决
更新了mac的操作系统到El capitan, 结果发现Matlab打不开了,每次都弹出一个Java error的窗口.现实如下内容 java.lang.NullPointerException at ...
- TCP SYN扫描学习笔记
1.TCP SYN包扫描主机状态的原理:tcp协议规定,当目标主机收到一个tcp syn 包时,若目标主机处于开放状态,会返回给源主机一个tcp ack 包(目的端口开放),或者向源主机发送一个tcp ...