这一段写一个小程序,有某个界面需要编辑较多的数据,于是用了一个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了。
分享到:
相关推荐
由于ListView的视图复用,当用户在EditText中输入数据时,如果ListView滚动,原来的EditText被回收并用于显示其他数据,可能导致用户输入的数据与列表项对应的数据错乱。为了解决这个问题,我们需要在Adapter中维护...
- 要在ListView中使用EditText,我们需要自定义一个Adapter,例如继承自BaseAdapter。在这个适配器中,我们需要重写`getView()`方法,该方法负责根据数据创建或复用ListView的每一行视图。 4. **getView()方法**:...
然而,当ListView的每个Item中包含多个EditText时,获取用户在这些EditText中输入的内容可能会变得复杂。本资源"Android中ListView多个Edittext获取输入内容.rar"显然是为了帮助开发者解决这个问题。 首先,我们来...
然而,在ListView中嵌套多个EditText时,常常会遇到一个问题,即用户在EditText中输入内容时,ListView滚动时导致显示混乱,原本输入的位置与EditText不匹配,这被称为“EditText焦点错乱”或“ListView复用机制问题...
在Android开发中,ListView是一个非常常用的组件,用于展示大量的列表数据。然而,当ListView中的item包含可编辑的EditText控件时,处理起来就相对复杂了。这是因为ListView的优化机制——视图复用(View Recycling...
Android开发中,有时会碰到ListView中含有EditText的需求,但是EditText这种控件在ListView进行滑动的时候,或者新数据被添加的时候,数据会丢失,解决方法就是,时刻保存数据,详情请看代码
在Android开发中,ListView是一种非常常见的视图组件,它用于展示大量的列表数据,通过滚动来节省内存。然而,当在自定义的ListView中添加EditText控件时,会遇到一些特殊的挑战,因为ListView的复用机制可能导致...
在Android开发中,ListView是一个非常常用的组件,它用于展示可滚动的列表数据。然而,在实际应用中,我们可能会遇到一个问题:当ListView中的一个EditText被选中并弹出软键盘时,EditText会失去焦点,导致用户无法...
2. **保存和恢复状态**:使用SparseArray或者其他合适的数据结构来保存用户在EditText中的输入状态。当一个item被复用时,根据其position从SparseArray中恢复之前的状态。 3. **监听EditText**:可以为每个EditText...
在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。在实际应用中,我们常常需要与ListView中的各个元素进行交互,比如获取EditText控件的输入值,或者根据用户操作动态删除列表项。本文将...
此外,需要注意的是,在处理多线程环境下,由于ListView的滚动和EditText的文本修改可能在不同的线程中进行,因此需要确保所有的操作都在UI线程中执行,或者使用Handler、AsyncTask等工具来处理异步操作。...
- 当用户在EditText中输入数值后,需要将这些数据保存起来。Android提供了多种数据存储方式,如SharedPreferences、SQLite数据库、内部/外部存储等。 - 在这种情况下,可能选择SharedPreferences或者SQLite数据库...
然而,当在ListView的每个条目(Item)中嵌入EditText时,可能会遇到一个问题:用户在EditText中输入数据后,如果上下滚动ListView,之前输入的数据可能会显示在其他条目上,造成数据错乱。这个问题被称为“ListView...
这就是如何在Android中根据EditText搜索框动态显示ListView数据的基本步骤。使用SimpleAdapter可以简化数据绑定,而TextWatcher则帮助我们监听并处理搜索事件。在实际应用中,你可能需要根据具体需求对数据结构和...
当用户在EditText中输入文字后滚动ListView,其他被复用的EditText可能会显示之前输入的内容,导致显示混乱。以下是对这个问题的深入分析和解决方案: 1. **问题解析**: - **ListView的工作原理**:ListView通过...
本篇文章将详细探讨如何在ListView中嵌套EditText,并动态获取每个EditText中的输入值。 首先,我们创建一个自定义的ListView项布局,该布局包含一个EditText。自定义布局通常放在res/layout目录下,例如`list_item...
在Android开发中,ListView与EditText的组合使用是一个常见的场景,比如在列表中添加可编辑的项。然而,这种结合往往会导致一些棘手的问题,特别是关于焦点和数据绑定的混乱。标题"ListView+EditText混乱问题"所提及...
通过上述步骤,你可以实现一个完整的在ListView中使用EditText的搜索功能。不过,具体实现可能会因项目需求和个人喜好有所不同,关键在于理解搜索的核心逻辑和如何与UI组件交互。在实际开发中,你可能还需要处理更多...
Android 修复ListView复用时的Edittext显示混乱问题,修复此问题的方法,在ListView中,每个条目都有Edittext,需要把每个Edittext输入的数据保存到对应的bean中,很快写了代码,没想到最 终的显示却很混乱,后来...
在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据。然而,当ListView内的元素包含EditText时,开发者可能会遇到一个常见的问题——EditText错位。这个问题通常出现在用户滚动ListView时,...