Displaying a List

来源:互联网 发布:java年终总结 编辑:程序博客网 时间:2024/05/01 04:40

      在开发app应用时,最常用的一个view类型就是ListView。

    ListVIew展示一个垂直可滚动的一个列表。每一个行通常包含一些文字,还有一些图标或者按钮。当你要展示一列数据给用户时,可以使用ListView。这个view非常通用,以至于android提供一个内置显示列表功能的Activity。

ListActivity

   一个ListActivity与一个包含listView的View绑定,在activity的onCreate方法中,不需要再调用setContentView方法,因为ListActivity已经默认设置了一个ListView。(当然,你也可以自己定义一个客户化的view)。ListActivity类也包含了一些非常方便的方法来获取数据,设置列表数据以及元素选择等。

   ListActivity实际上也设置了一个包含一个ListVIew的layout作为它的内容。此外,andriod还提供了其他多种内置的layout,大部分都包含在android.R.layout类中。例如

  android.R.layout.simple_list_item_1用来显示一行仅有单独一列文字的ListView。

  android.R.layout.two_line_lsit_item用来显示一行有两列文字的列表。

XML Layout

   ListView 有一些特殊的属性可以用来定义复杂的布局。首先是android:entries属性。当你要展示一个静态的,数值不改变的列表使用这个属性。

Row Layout

   对于ListView中的每一行都可以像Activity一样布局,你可以创建一个xml的layout文件来改变布局。每一个行都包含定义的布局,让你可以很好的设置文字和图片的值。

Binding Data to the list

   如果你知道一个list的元素时,使用entries属性会有很大帮助。但是,当你想动态生成list时,你需要使用一个list适配器。适配器用来把数据和你的界面绑定。

   当你创建一个list适配器,你需要重载getView方法。这个方法被系统调用用来生成每一行数据。这个方法为每一行Listveiw填入数据,通过转化xml layout为一个view object的集合。当用户拖动list时,系统会调用这个方法创建新的行。那些不再显示的行会被垃圾回收机制收回。

Loaders

   把数据导入到一个list适配器中是一个冗长乏味的过程,你需要异步的处理数据,以免在主线程有太多的工作,当数据发生变化时,你需要重新导入数据,保证显示数据的正确。你需要保证屏幕方向变化时维持数据。为了简化这些过程,android3提供给了一个很有帮助的类,即loader。

   通过兼容包,这个loader类可以在android的各个版本中使用。这个包括了新的android APIs的实现,例如loaders和fragments,使得你可以在旧版本的android中使用它们。