Android在Listview中使用EditText

来源:互联网 发布:淘宝服务协议更新 编辑:程序博客网 时间:2024/05/16 08:53

服务器挂了,或许这个可以解决我的问题

这一段写一个小程序,有某个界面需要编辑较多的数据,于是用了一个Listview,将EditText放进去用来做编辑控件,遇到了下面的情况: 
1.屏幕内容滚动时会调用ListView的Adapter的getView()重新产生View,这就要求及时保存EditText中的数据,不然会丢失,使用了Listener监听EditText的TextChange,但是发现Listener经常不被调用,跟踪发现在getView()中创建的Edittext和ListView中用来显示的EditText句柄不一样 。 
2.再次就是当软键盘弹出后,焦点从当前输入的EditText丢失,移动了第一个EditText上,屏幕直接来个大滚屏。。。根本没法使用。 

观察手机上的联系人,也是一列EditText,就没有这些现象,直接打开源码去看。 
里面互相引用,看的头大,开始带着印象去找其布局中使用的ListView,居然没找到,一头雾水。直到吃饭时才猛然反应过来,看到了ScrollView,其使用的是ScrollView+竖向LineLayout,一下把这些问题都避免了。只是LineLayout中的内容是动态生成的。 
结论:当界面元素不多时可以使用ScrollView+linearLayout来实现ListView效果。 
当包含的元素很多,每个元素的界面又在不停改变或者元素的数量在动态改变时就只能用ListVIew了。

原创粉丝点击