Android基础之EditText在ListView中的使用
前段时间项目中使用Listview,条目中用到了EditText,遇到了两个问题,看了别人的思路终于解决了.第一个问题是:Edittext失去焦点的问题;第二个是,数据丢失的问题;
右侧---为Edittext
1.先看焦点丢失的问题
原因:当我们点击了Edittext之后,键盘弹出,同时Listview也会重新绘制,导致Edittext的焦点丢失.
那么,知道原因我们就能找到解决这个焦点丢失的问题.
我们可以用一个变量记录当前获取焦点的Edittext对应的位置.
//定义成员变量mTouchItemPosition,用来记录手指触摸的EditText的位置
private int itemEditTextPosition=0;// 这里默认是选中了第一个位置
此外,看下图,适配器中需要添加如下代码
适配器中添加如下操作
.调用setTag的方法给Edittext设置对应的position,然后监听触摸事件,获取触摸的Edittext对应的位置.
判断若当前position等于记录的获取到焦点的Edittext对应位置,那么就让该EditText获取到焦点,并且将光标位于字符串末尾.
2.第二个问题,数据丢失的问题,解决此办法,我偷懒了,我是直接监听了Edittext;
如下图所示,我在text变化的时候,记录该值;在结束的时候刷新了数据;这种方法,虽然可以解决问题,但是性能上肯定是有待提高,所以有好的办法,麻烦请告知我一下,谢谢.
第二张图片
迫切希望告知好的方法,可以提升性能,谢谢.