学习使用ListView显示列表

ListView是android中显示列表的控件,每一个ListView都可以包含很多个列表项,列表项的个数完全由数据源所决定。每一个列表项特定格式的数据又是怎么加载到视图界面上的呢?这里就需要引入数据适配器。数据适配器的作用就是把复杂的数据(比如,数组/链表/数据库/集合……)填充在指定的视图界面上。(备注 :这里“指定的数据界面“并不一定是ListView,android给我们提供了很多的控件)。

以下例例举两种适配器:

1、ArrayAdapter(数组适配器):用于绑定格式单一的数据,数据源可以是集合或数组。
2、SimpleAdapter(简单适配器):用于绑定格式复杂的数据,数据源只能是特定泛型的集合。
数据适配器是连接数据源与视图界面的桥梁。

数据适配器的实现过程非常简单,只需要三步:新建适配器------>添加数据源到适配器------>视图加载适配器


下面来分别看看ListView加载ArrayAdapter(数组适配器)和SimpleAdapter(简单适配器)的简单案例:

首先是ArrayAdapter:

public class MainActivity extends Activity
{
    //声明
    private ListView listView;
    private ArrayAdapter<String>arrayAdapter;//数组适配器
    private SimpleAdapter simpleAdapter;//简单适配器
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listView= (ListView) findViewById(R.id.listView);//初始化ListView,绑定视图
        //1、新建数据适配器
        //ArrayAdapter(上下文,当前ListView加载的每一个列表项所对应的布局文件,数据源)
        //2、适配器加载数据源
        String[]arrData={"测试数据1","测试数据2","测试数据3","测试数据4"};//数据源
        arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrData);
        //android.R.layout.simple_list_item_1android自带的布局文件

        //视图(ListView)加载适配器
        listView.setAdapter(arrayAdapter);
    }
}
运行结果如下:



SimpleAdapter简单案例:

public class MainActivity extends Activity
{
    //声明
    private ListView listView;
    private SimpleAdapter simpleAdapter;//简单适配器
    private List<Map<String,Object>> dataList;//声明数据源的list
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        listView= (ListView) findViewById(R.id.listView);//初始化ListView,绑定视图
        //1、新建数据适配器
        //SimpleAdapter()
        /*
        * context:上下文
        * data:数据源(List<? extends Map<string,?>> data)一个Map所组成的List集合
               每一个Map都会对应ListView列表中的一行
               每一个Map(键-值对)中的键必须包含所有在from中所指定的键
        * resource:列表项的布局文件ID
        * from:Map中的键名
        * to:绑定视图中的ID,与from形成对应关系
        */
        //2、适配器加载数据源
        dataList=new ArrayList<Map<String,Object>>();
        
        simpleAdapter=new SimpleAdapter(this,getDataList(),R.layout.item,new String[]{"pic","text"},new int[]{R.id.pic,R.id.text});
        //android.R.layout.simple_list_item_1android自带的布局文件
        //R.layout.item:自定义列表项样式(pic + text;
        
        //3、视图(ListView)加载适配器
        listView.setAdapter(simpleAdapter);
    }

    //获取数据源
    private List<Map<String,Object>> getDataList()
    {
        for(int i=0;i<20;i++)
        {
            Map<String,Object>map=new HashMap<String,Object>();
            map.put("pic",R.mipmap.ic_launcher);
            map.put("text","测试数据"+i);
            dataList.add(map);
        }
        return dataList;
    }
}
运行结果:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值