我没有得到这个简单的技巧 - UI和列表视图

时间:2014-11-01 05:04:13

标签: android listview adapter

我从链接中找到了教程(作者似乎无效) - > http://www.androidhive.info/2012/09/android-adding-search-functionality-to-listview/

我的问题是为什么还有其他 list_item.xml ,这在主UI文件中甚至不存在(至少对用户不可见)

主UI文件有EditText和ListView,附加文件(自定义控件?)有一个TextView,我认为不是用户真正打字的字段,它似乎在某种程度上应用程序从中读取。

主UI文件中的EditText和自定义控件的TextView之间的桥梁在哪里? 在ListView中过滤数据基于 EditView ,但如果用户从另一个文件中键入 EditText ,内容将如何传递给它

很抱歉,如果这是一个noob问题,我想它与代码中的适配器有关,但通常我用C#编写桌面程序,我无法想象这段代码是如何工作的......

adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);

R.id.product_name 为空(在我的想法中)

唯一连接这两个字段的是它们在UI上的相同位置,但是不可能同时输入2个字段......是吗?

3 个答案:

答案 0 :(得分:2)

list_item 用于扩充listview中的行。

什么是通胀? 假设你正在用气球推动一些空气,并且在这个过程中你实际上在气球中充气。

同样,在创建列表视图时,必须定义视图,以便列表视图的每一行代表该视图。该视图必须在列表视图中膨胀。每个列表视图必须使视图膨胀。并且该视图每次在listview中创建一个新行时都会被回收。

在这种情况下,该视图是仅包含textview的list_item.xml文件。 该列表中的每个和每一行都会出现绿色视图。

我认为在推进之前,你必须学习listview的基本组成部分。参见this

答案 1 :(得分:1)

list_item.xml是重复列表项的模板,以及过滤与其无关的数据的EditText
当您在EditText内输入时,方法onTextChanged会使用此MainActivity.this.adapter.getFilter().filter(cs); 执行和过滤数据 方法filter可以在您的适配器中覆盖

答案 2 :(得分:1)

- 设置适配器时引用了#1 list_item.xml。它告诉适配器,嘿,每个项目,膨胀看起来像这样的布局。因此,如果我的listView的适配器getCount()返回5,它将产生5个看起来像list_item布局的项目(行)。

- #2 textView用于在列表视图中显示不同的电话名称。它是一个标签。它不是用户输入数据的地方。这就是EditText。

- #3这里使用的arrayAdapter构造函数是一种便利类型,换句话说,它会假设您的数据,这样程序员就不必进行大量的输入/配置。它假设你有一个布局(R.layout.list_item),布局包含textView(R.id.product_name),并且你有一些字符串(产品)的集合/数组。它知道集合有字符串,因为我们通过附加&lt;来键入ArrayAdapter。串GT;它。

它会自动假定该集合或数组的第一个String元素位于它创建的第一个list_item的textView中,依此类推。如果将鼠标悬停在eclipse中的构造函数上,它将告诉您如何使用这些参数。有很多低级方法来编写这些东西,但这种方法经常用于教程中,因为它很容易快速启动和运行。