`
mypyg
  • 浏览: 548026 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Android在Listview中使用EditText

阅读更多
这一段写一个小程序,有某个界面需要编辑较多的数据,于是用了一个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中的内容是动态生成的。

遂改。

Listview的demo文件改的惨不忍睹,日后整理了再上传。

结论:当界面元素不多时可以使用ScrollView+linearLayout来实现ListView效果。
当包含的元素很多,每个元素的界面又在不停改变或者元素的数量在动态改变时就只能用ListVIew了。
2
2
分享到:
评论
11 楼 xiaodousa 2014-11-13  
9楼正解!
10 楼 zxyzss 2014-01-16  
求代码,大神,278123853@qq.com  谢谢
9 楼 fyc0109 2013-12-13  
用ListView 不要重用ConvertView
8 楼 lmm90 2013-06-08  
lz,发个源码看看,正用到,搞了一天了,谢谢。邮箱:550662147@qq.com
7 楼 gundumw100 2013-04-22  
该问题的确非常恶心。
看这个可能会帮助你
http://blog.sina.com.cn/s/blog_80f8936801012cp7.html

事实上,ListView中含有CheckBox的话,也会有这样的问题。
可以通过引入一个中间变量记录一下EditText中的内容,然后再赋值,就是繁琐的很!
或者ScollView+ListView一次性将ListView中的item全部显示出来,虽然也不是好主意!
6 楼 wangyezidong 2012-09-04  
mypyg 写道
wangyezidong 写道
当我有linearlayout中有许多edittext的时候,当EditText改变时,更新后台数据,怎么获取是第几个EditText啊??


setTag函数做个标记,再通过getTag获取标记来判断。

你好,这个我已经解决了,也是用的tag
5 楼 mypyg 2012-08-31  
wangyezidong 写道
当我有linearlayout中有许多edittext的时候,当EditText改变时,更新后台数据,怎么获取是第几个EditText啊??


setTag函数做个标记,再通过getTag获取标记来判断。
4 楼 wangyezidong 2012-08-27  
当我有linearlayout中有许多edittext的时候,当EditText改变时,更新后台数据,怎么获取是第几个EditText啊??
3 楼 幽奇猫 2011-08-26  
我也正在弄这个问题。
看了你的描述,也有了点启发。不过现在还没解决。没看到你的代码,想参考一下哎。
2 楼 trainbow 2011-02-18  
楼主,我也遇到同样的问题

2.再次就是当软键盘弹出后,焦点从当前输入的EditText丢失

如果不改变listview可以解决吗……
1 楼 qianjigui 2010-12-28  
看到你的描述,我有很多启发,并找到了一个比较好的方法。

利用ListView的getChildAt方法可以获得UI中输入的数据值。

我觉得可以换个思路考虑这个问题,就是说SimpleAdapter这类的东西是在初始化时被ListView调用。在需要最终获取结果时,我们就直接查找ListView含有的View。

相关推荐

    android listview带有editText

    由于ListView的视图复用,当用户在EditText中输入数据时,如果ListView滚动,原来的EditText被回收并用于显示其他数据,可能导致用户输入的数据与列表项对应的数据错乱。为了解决这个问题,我们需要在Adapter中维护...

    android listview中有edittext的demo

    - 要在ListView中使用EditText,我们需要自定义一个Adapter,例如继承自BaseAdapter。在这个适配器中,我们需要重写`getView()`方法,该方法负责根据数据创建或复用ListView的每一行视图。 4. **getView()方法**:...

    Android中ListView多个Edittext获取输入内容.rar

    然而,当ListView的每个Item中包含多个EditText时,获取用户在这些EditText中输入的内容可能会变得复杂。本资源"Android中ListView多个Edittext获取输入内容.rar"显然是为了帮助开发者解决这个问题。 首先,我们来...

    Android完美解决listview中多个edittext显示混乱问题

    然而,在ListView中嵌套多个EditText时,常常会遇到一个问题,即用户在EditText中输入内容时,ListView滚动时导致显示混乱,原本输入的位置与EditText不匹配,这被称为“EditText焦点错乱”或“ListView复用机制问题...

    ListView中的EditText

    在Android开发中,ListView是一个非常常用的组件,用于展示大量的列表数据。然而,当ListView中的item包含可编辑的EditText控件时,处理起来就相对复杂了。这是因为ListView的优化机制——视图复用(View Recycling...

    Android 解决ListView中有EditText时,数据丢失问题

    Android开发中,有时会碰到ListView中含有EditText的需求,但是EditText这种控件在ListView进行滑动的时候,或者新数据被添加的时候,数据会丢失,解决方法就是,时刻保存数据,详情请看代码

    安卓自定义ListView中含有EditText控件

    在Android开发中,ListView是一种非常常见的视图组件,它用于展示大量的列表数据,通过滚动来节省内存。然而,当在自定义的ListView中添加EditText控件时,会遇到一些特殊的挑战,因为ListView的复用机制可能导致...

    android ListView中EditText被选中时弹出键盘会丢失EditText的焦点

    在Android开发中,ListView是一个非常常用的组件,它用于展示可滚动的列表数据。然而,在实际应用中,我们可能会遇到一个问题:当ListView中的一个EditText被选中并弹出软键盘时,EditText会失去焦点,导致用户无法...

    Android 根据EditText搜索框 ListView动态显示数据

    这就是如何在Android中根据EditText搜索框动态显示ListView数据的基本步骤。使用SimpleAdapter可以简化数据绑定,而TextWatcher则帮助我们监听并处理搜索事件。在实际应用中,你可能需要根据具体需求对数据结构和...

    X宝买的。完美解决Android-listview中多个edittext显示混乱问题

    2. **保存和恢复状态**:使用SparseArray或者其他合适的数据结构来保存用户在EditText中的输入状态。当一个item被复用时,根据其position从SparseArray中恢复之前的状态。 3. **监听EditText**:可以为每个EditText...

    动态获取listView中的edittext的值

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。在实际应用中,我们常常需要与ListView中的各个元素进行交互,比如获取EditText控件的输入值,或者根据用户操作动态删除列表项。本文将...

    Listview中的EditText数值的存储

    - 当用户在EditText中输入数值后,需要将这些数据保存起来。Android提供了多种数据存储方式,如SharedPreferences、SQLite数据库、内部/外部存储等。 - 在这种情况下,可能选择SharedPreferences或者SQLite数据库...

    ListView 解决EditText冲突

    然而,当在ListView的每个条目(Item)中嵌入EditText时,可能会遇到一个问题:用户在EditText中输入数据后,如果上下滚动ListView,之前输入的数据可能会显示在其他条目上,造成数据错乱。这个问题被称为“ListView...

    Android 解决listview中edittext显示混乱问题

    当用户在EditText中输入文字后滚动ListView,其他被复用的EditText可能会显示之前输入的内容,导致显示混乱。以下是对这个问题的深入分析和解决方案: 1. **问题解析**: - **ListView的工作原理**:ListView通过...

    listView中嵌套EditText,动态获取EditText中的值

    本篇文章将详细探讨如何在ListView中嵌套EditText,并动态获取每个EditText中的输入值。 首先,我们创建一个自定义的ListView项布局,该布局包含一个EditText。自定义布局通常放在res/layout目录下,例如`list_item...

    ListView+EditText混乱问题

    在Android开发中,ListView与EditText的组合使用是一个常见的场景,比如在列表中添加可编辑的项。然而,这种结合往往会导致一些棘手的问题,特别是关于焦点和数据绑定的混乱。标题"ListView+EditText混乱问题"所提及...

    Android 修复ListView复用时的Edittext显示混乱问题.rar

    Android 修复ListView复用时的Edittext显示混乱问题,修复此问题的方法,在ListView中,每个条目都有Edittext,需要把每个Edittext输入的数据保存到对应的bean中,很快写了代码,没想到最 终的显示却很混乱,后来...

    ListView里EditText错位的问题

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据。然而,当ListView内的元素包含EditText时,开发者可能会遇到一个常见的问题——EditText错位。这个问题通常出现在用户滚动ListView时,...

    ListView和EditText

    当用户在ListView的某一行EditText中输入文本,一旦ListView滚动,当前行可能被替换,导致EditText失去焦点,用户输入的数据也可能丢失。为了解决这个问题,我们需要自定义一个Adapter,并在getView()方法中处理焦点...

    Listview+Edittext和ListView+CheckBox

    在Android开发中,ListView是一种常用的UI组件,用于展示大量数据列表。它允许用户滚动查看信息,同时提供了多种可定制的交互方式。本话题主要探讨如何在ListView中集成EditText和CheckBox,以实现更具交互性的功能...

Global site tag (gtag.js) - Google Analytics