Android基础之EditText在ListView中的使用

来源:互联网 发布:spark要用java吗? 编辑:程序博客网 时间:2024/06/05 04:45

前段时间项目中使用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变化的时候,记录该值;在结束的时候刷新了数据;这种方法,虽然可以解决问题,但是性能上肯定是有待提高,所以有好的办法,麻烦请告知我一下,谢谢.


第二张图片

迫切希望告知好的方法,可以提升性能,谢谢.

原创粉丝点击