一 ListView介绍:
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
显示需要三个元素:
1.ListVeiw:用来展示列表的View。
2.适配器:用来把数据映射到ListView上的中介。
3.数据:具体的将被映射的字符串、图片,或者基本组件。
二 listview标签
需要首先在布局文件main.xml中定义ListView标签:
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
三 适配器和数据
适配器是用来把数据映射到listview列表的中介。
适配器分为三类:ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
1 ArrayAdapter比较常用,也是显示最简单的,只能显示一列数据
代码:
ListView listView = (ListView)findViewById(R.id.listview);
String[] arr = {"aaa","bbb","ccc"};//定义一个数组
//将数据封装到ArrayAdapter
ArrayAdapter<String> arrayAdapter = newArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr);
listView.setAdapter(arrayAdapter);//为ListView设置Adapter
2 SimpleAdapter扩充性比较好,可以定义多样的效果。下面就以显示左侧显示图片,右侧显示文字的代码为例:
ListView listView = (ListView) findViewById(R.id.listview);
SimpleAdapter adapter =
new SimpleAdapter(this, getData(),R.layout.vlist, new String[] { "title", "img" }, new int[] {R.id.title, R.id.img });
listView.setAdapter(adapter);
private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "title");
map.put("img", R.drawable.i1); //加载图片
list.add(map);
return list;
}
vlist.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="100px"
android:layout_margin="0px" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="30px"
android:textColor="#FFFFFFFF"
android:textSize="22px" />
</LinearLayout>
</LinearLayout>
3 SimpleCursorAdapter 可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表的形式展示出来。
代码:
Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
startManagingCursor(cursor);
ListAdapter listAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_expandable_list_item_1, cursor, new String[]{People.NAME}, new int[]{android.R.id.text1});
listView.setAdapter(listAdapter);
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示。
显示需要三个元素:
1.ListVeiw:用来展示列表的View。
2.适配器:用来把数据映射到ListView上的中介。
3.数据:具体的将被映射的字符串、图片,或者基本组件。
二 listview标签
需要首先在布局文件main.xml中定义ListView标签:
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
三 适配器和数据
适配器是用来把数据映射到listview列表的中介。
适配器分为三类:ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
1 ArrayAdapter比较常用,也是显示最简单的,只能显示一列数据
代码:
ListView listView = (ListView)findViewById(R.id.listview);
String[] arr = {"aaa","bbb","ccc"};//定义一个数组
//将数据封装到ArrayAdapter
ArrayAdapter<String> arrayAdapter = newArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arr);
listView.setAdapter(arrayAdapter);//为ListView设置Adapter
2 SimpleAdapter扩充性比较好,可以定义多样的效果。下面就以显示左侧显示图片,右侧显示文字的代码为例:
ListView listView = (ListView) findViewById(R.id.listview);
SimpleAdapter adapter =
new SimpleAdapter(this, getData(),R.layout.vlist, new String[] { "title", "img" }, new int[] {R.id.title, R.id.img });
listView.setAdapter(adapter);
private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
Map<String, Object> map = new HashMap<String, Object>();
map.put("title", "title");
map.put("img", R.drawable.i1); //加载图片
list.add(map);
return list;
}
vlist.xml内容如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<ImageView
android:id="@+id/img"
android:layout_width="wrap_content"
android:layout_height="100px"
android:layout_margin="0px" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingTop="30px"
android:textColor="#FFFFFFFF"
android:textSize="22px" />
</LinearLayout>
</LinearLayout>
3 SimpleCursorAdapter 可以认为是SimpleAdapter对数据库的简单结合,可以方便的把数据库的内容以列表的形式展示出来。
代码:
Cursor cursor = getContentResolver().query(People.CONTENT_URI, null, null, null, null);
startManagingCursor(cursor);
ListAdapter listAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_expandable_list_item_1, cursor, new String[]{People.NAME}, new int[]{android.R.id.text1});
listView.setAdapter(listAdapter);