Android--UI之ListView
前言
今天讲解一下Android平台下ListView控件的开发,在本篇博客中,将介绍ListView的一些常用属性、方法及事件,还会讲解ListView在开发中常用的几种方式,以及使用不通用的适配器Adapter定制个性的View视图用于ListView的展示。
ListView
ListView,列表视图,直接继承了AbsListView,是一个以垂直方式在项目中显示View视图的列表。ListView的数据项,来自一个继承了ListAdapter接口的适配器。
ListView的常用属性一般就是用来设置列表的间隔、分割线、表头、表尾等属性的,常用属性有以下几个,并且Android也为其提供了对应的setter/getter方法:
ListView提供了一些方法,用于操作ListView。这里介绍一些常用的方法,更多的请参见API文档:
作为一个列表选择控件,ListView具有一些选中选项可以触发的事件,但它本身没有定义这些事件,均继承自间接父类AdapterView。ListView支持的几个常用事件有以下几个:
在Android项目中使用ListView,有两种方式,一种是通过一个继承了ListActivity的Activity,在其中设定ListAdapter,对于这种方式,比较适用于整个页面就是一个ListView;第二种方式就是直接使用ListView控件,这种方式也是项目中比较常用的方式。
ListActivity
ListActivity继承了Activity,并通过绑定一个ListAdapter来显示一个数据列表。需要注意的是,如果对列表项的数据格式没有特殊要求,它完全可以不使用布局文件即可创建一个ListView,因为ListActivity类本身已经包含了一个ListView。因此在onCreate()方法中,不需要调用setContentView()方法来从一个布局文件加载用户界面。
在ListActivity的onCreate()方法中,可以直接使用this.setListAdapter()方法为这个ListView设定ListAdapter。如果想获得并操作这个ListActivity自带的ListView,可以使用this.getListView()方法获取。
下面通过一个Demo讲解一下使用继承ListActivity的方式来实现ListView,因为这里只是使用一个ArrayAdapter填充数据,无需指定布局文件,这里只提供实现代码:
1 package com.bgxt.datatimepickerdemo; 2 3 import android.app.ListActivity; 4 import android.os.Bundle; 5 import android.view.View; 6 import android.widget.ArrayAdapter; 7 import android.widget.ListView; 8 import android.widget.TextView; 9 import android.widget.Toast; 10 11 public class ListActivityDemo extends ListActivity { 12 private String[] presidents={"北京","深圳","济南","广州","海南","香港","澳门"}; 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 // TODO Auto-generated method stub 17 super.onCreate(savedInstanceState); 18 ListView listview=getListView(); 19 //添加一个TextView作为表头 20 TextView tvHeader=new TextView(ListActivityDemo.this); 21 tvHeader.setText("城市列表头"); 22 listview.addHeaderView(tvHeader); 23 //添加一个TextView作为表尾 24 TextView tvFooter=new TextView(ListActivityDemo.this); 25 tvFooter.setText("城市列表尾"); 26 listview.addFooterView(tvFooter); 27 listview.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1,presidents)); 28 29 } 30 @Override 31 protected void onListItemClick(ListView parent, View view, int position, long id) { 32 33 Toast.makeText(this, "You have selected "+presidents[position], Toast.LENGTH_SHORT).show(); 34 } 35 }
效果展示:
使用ListView控件构建
上面介绍的这种方式会将整个Activity都作为一个ListView,但是在实际项目中,一般还是把ListView作为一个数据显示控件,填充在布局中。现在通过一个简单的Demo,讲解使用ListView控件展示一个ArrayAdapter填充的数据列表。
布局代码:
1 26 7 13
实现代码:
1 package com.bgxt.datatimepickerdemo; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import android.app.Activity; 7 import android.os.Bundle; 8 import android.widget.ArrayAdapter; 9 import android.widget.ListView; 10 11 public class ListViewSimpleActivity extends Activity { 12 private ListView listview; 13 private ArrayAdapteradapter; 14 private List data; 15 @Override 16 protected void onCreate(Bundle savedInstanceState) { 17 // TODO Auto-generated method stub 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_listviewsimple); 20 getData();//填充数据 21 listview=(ListView)findViewById(R.id.listviewsimple); 22 //设定列表项的选择模式为单选 23 adapter=new ArrayAdapter (ListViewSimpleActivity.this, android.R.layout.simple_list_item_single_choice, data); 24 listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 25 listview.setAdapter(adapter); 26 } 27 28 private void getData(){ 29 data=new ArrayList (); 30 data.add("北京"); 31 data.add("上海"); 32 data.add("深圳"); 33 data.add("武汉"); 34 data.add("宜昌"); 35 data.add("成都"); 36 data.add("贵阳"); 37 data.add("杭州"); 38 data.add("济南"); 39 data.add("天津"); 40 } 41 }
效果展示:
使用SimpleAdapter填充数据
ListView的使用范围很广,一般也不仅仅用来展示简单的数据,对于一些复杂样式的数据而言,可以使用SimpleAdapter这个适配器。对于SimpleAdapter适配器的用法,可以参见我的另外一篇博客:Android--UI之Spinner,这里就不再累述了。
下面直接通过一个Demo讲解,在这个Demo中,对于SimpleAdapter填充样式而言,不再单独给定模板,直接使用布局的模板。
布局代码:
1 26 7 11 12 37 3820 21 28 29 36 42 43
实现代码:
1 package com.bgxt.datatimepickerdemo; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 8 import android.app.Activity; 9 import android.os.Bundle; 10 import android.widget.ListView; 11 import android.widget.SimpleAdapter; 12 13 public class SimpleAdapterActivity extends Activity { 14 private ListView listview; 15 private SimpleAdapter simpleAdapter; 16 private List
效果展示:
本文转自承香墨影博客园博客,原文链接:http://www.cnblogs.com/plokmju/p/android_ListView.html,如需转载请自行联系原作者
标签:
相关文章
-
无相关信息