安卓界面组件----列表视图
ListView列表视图是安卓组件中最常见的,它以垂直列表的形式展出需要显示的列表项,比如:我们的系统设置,功能列表,新闻客户端的下拉刷新等。
和特别的是:ListView不仅仅能够通过组件进行创建,还有通过开发者自己继承ListActivity实现。
一 使用ListView组件实现
作为组件,需要注意ListView的几个基本属性:
android:divider 为列表视图设置分隔条,分隔可以使用颜色分割,也可以使用drawable资源进行分隔
android:dividerHeight 设置分隔条的高度
android:entries 通过资源数组指定ListView列表项
android:footerDividersEnable 设置foot view之前是否设置分隔条;当次属性为true,可以通过addFooterView()方法设置footer view
android:headerDividersEnable 设置head view之前是否设置分隔条;当次属性为true,可以通过addFooterView()方法设置head view
实际操作:
1.布局文件添加列表视图,通过xml资源文件配置其显示内容
//在布局中添加的ListView,不指定资源文件的数据
<ListView
android:id="@+id/listView1"
android:divider="@drawable/divide"
android:dividerHeight="3dp"
android:footerDividersEnabled="true"
android:headerDividersEnabled="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</ListView>
//资源文件指定的数据
<string-array name="data"> <item >first</item> <item >second</item> <item >third</item> </string-array>
运行效果:
2.通过适配器设置显示的内容
列表视图重要的是显示的内容:同Spinner一样,当布局xml文件没有指定要显示的内容时,可以通过设配器设置列图视表要显示的内容。
列图视表的使用分为两个步骤:1>创建适配器 2>将适配器关联给列图视表组件
创建适配器:适配器创建可以通过资源文件创建,也可以使用字符串数组创建。创建适配器过程和下拉选择框不同的是需要指定列图视表显示内容的形式(是否带复选框或单选框)
资源文件创建:
ArrayAdapter<CharSequence> a = ArrayAdapter.createFromResource(this, R.array.data, android.R.layout.simple_list_item_checked);
通过字符串数组创建:
String[] str = new String[]{"first","second","third"}; ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_checked,str);
绑定适配器:
ListView v = (ListView)findViewById(R.id.listView1);
v.setAdapter(adapter);
注意:运行效果已经设置了显示内容的形式
3.实现监听
v.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> v, View arg1, int pos, long id) { String result = v.getItemAtPosition(pos).toString(); Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); } });
二 继承ListActivity实现
如果程序仅仅是要显示一个列表窗口,可以直接继承ListActivity实现。继承了ListActivity之后,onCreate()方法不需要setContentView()方法设置显示容器,ListActivity已经设置好了显示。这时候,仅仅给ListActivity配置适配器即可。
需要将ListActivity继承,之后添加设配器即可。关键代码:
public class MainActivity extends ListActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ArrayAdapter<CharSequence> a = ArrayAdapter.createFromResource(this, R.array.data, android.R.layout.simple_list_item_checked); setListAdapter(a); }
ListActivity的事件监听和Activity有所不同,ListActivity已经实现了监听事件,开发者将onListItemClick()覆盖即可。
@Override protected void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); String result = l.getItemAtPosition(position).toString(); Toast.makeText(MainActivity.this, result, Toast.LENGTH_LONG).show(); }
总结:和下拉列表视图类似,显示内容我们可以通过xml配置,也可以使用适配器适配。ListView效果的实现还可以继承ListActivity,ListActivity已经实现了Activity的方法,不需要设置setContentView(),事件监听方面覆盖原来的onListItemClick()
水平有限,请留言指教!