详解ListView
在android开发中,ListView是比较常用的组件,它以列表的形式展示了具体内容,并且能够根据数据的长度自适应显示。
列表的显示需要三个元素:
1.ListView:用来展示列表的View;
2.适配器:用来把数据映射到ListView上的媒介,相当于数据与视图的桥梁;
3.数据:具体的被映射到视图上的字符串、图片或者基本组件。
根据列表的适配器类型,列表分为三种:
1.ArrayAdapter:最简单的一种,只能展示一行字;
2.SimpleAdapter:有最好的扩充性,可以自定义各种效果;
3.SimpleCursorAdapter:可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表的形式展示出来。
第一种:ArrayAdapter:
1 package com.androidpractice; 2 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import android.os.Bundle; 7 import android.app.Activity; 8 import android.widget.ArrayAdapter; 9 import android.widget.ListView; 10 11 public class MainActivity extends Activity { 12 13 @Override 14 public void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 /*拿到一个ListView; 17 * 方式一:ListView listView = new ListView(this);其中this指上下文context,即MainActivity; 18 * 方式二:ListView listView = (ListView)findViewById("R.id.arradp"); 19 * */ 20 ListView listView = new ListView(this); 21 /*用适配器ArrayAdapter将数据映射到视图ListView上,其中三个参数分别是: 22 * 1.Context:上下文,即MainActivity; 23 * 2.R.layout.main:即视图文件,分为两种:(1).系统定义的:android.R.layout.simple_expandable_list_item_1; 24 * (2).自定义xml文件:R.layout.main,注意:自定义的xml文件仅能有一个TextView,连LinearLayout都不能有; 25 * 3.数据*/ 26 listView.setAdapter(new ArrayAdapter<String>(this,R.layout.main,getData())); 27 //在视图中显示数据列表 28 setContentView(listView); 29 } 30 31 private List<String> getData(){ 32 List<String> data= new ArrayList<String>(); 33 data.add("测试数据一"); 34 data.add("测试数据二"); 35 data.add("测试数据三"); 36 data.add("测试数据四"); 37 return data; 38 } 39 }
xml文件:
1 <TextView xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 4 android:layout_width="fill_parent" 5 android:layout_height="wrap_content" 6 android:id="@+id/arradp" 7 8 />