SimpleAdapter 和 ArrayAdapter使用详解

来源:互联网 发布:自动抢火车票软件 编辑:程序博客网 时间:2024/06/05 19:16

这一节我们来讲解一下适配器的使用以及应注意的问题,那么什么是适配器呢?
适配器,顾名思义,就是连接视图布局与数据的桥梁。android为我们提供了两个比较常用的适配器,一个是SimpleAdapter另一个是ArrayAdapter(注意:simpleAdapter只支持复杂的泛型集合,而ArrayAdapter支持比较常见的数组,链表,数据库,集合)。记住配置listView分三步走。
1.创建适配器
2.连接数据源
3.将适配器连接到我们的listview中,好了下面代码上见分晓
首先我们来创建一个一个android的工程,命名为SimplistTest,接下来在mainactivity类下添加如下代码:

package com.example.simplelisttest;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.app.ActionBar;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.ViewGroup;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.SimpleAdapter;import android.os.Build;public class MainActivity extends Activity {        List<Map<String,Object>> simpleList=new ArrayList<Map<String,Object>>();;//只支持泛型的复杂集合对象    private ListView listView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        listView=(ListView)findViewById(R.id.list_view);//连接到我们的视图模型中,及下面的main_activity.xml文件        initSimpleData();//初始化data        /*         * 创建适配器         * 第一个参数是上下文         * 第二个是数据源         * 第三个参数是需要适配的视图模型         * 第四个是数据源中的键值对中的key         * 第五个是视图中相对应的id         */        SimpleAdapter simple=new SimpleAdapter(this, simpleList,R.layout.item,new String[]{"fruit_image","fruit_name"}, new int[]{R.id.fruit_image,R.id.fruit_name});        /*将适配器导入到listView中*/        listView.setAdapter(simple);    }    private List<Map<String,Object>> initSimpleData(){        for(int i=0;i<20;i++){            Map<String,Object> datalist=new HashMap<String,Object>();            datalist.put("fruit_image", R.drawable.apple_pic);            datalist.put("fruit_name", "apple");            simpleList.add(datalist);        }        return simpleList;    }}

item.xml文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><ImageViewandroid:id="@+id/fruit_image"android:layout_width="wrap_content"android:layout_height="wrap_content" /><TextViewandroid:id="@+id/fruit_name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center"android:layout_marginLeft="10dip" /></LinearLayout>

activity_main.xml文件

android:layout_width="match_parent"android:layout_height="match_parent" ><ListViewandroid:id="@+id/list_view"android:layout_width="match_parent"android:layout_height="match_parent" ></ListView></LinearLayout>

运行效果如下:
…………………….好像网速不给力,算了就这样吧

关于ArrayAdapter其实比simpleAdapter更为简单,供上第一行代码里面的源码,如下:
activity_main.xml 中的代码

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent" ><ListViewandroid:id="@+id/list_view"android:layout_width="match_parent"android:layout_height="match_parent" ></ListView></LinearLayout>

java代码

public class MainActivity extends Activity {private String[] data = { "Apple", "Banana", "Orange", "Watermelon","Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);ListView listView = (ListView) findViewById(R.id.list_view);listView.setAdapter(adapter);}}

好了,这一章节我们就讲到这里

0 0