详解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 />
原文地址:https://www.cnblogs.com/thinksasa/p/2795107.html