Android学习之适配器ArrayAdapter SimpleAdapter

        Adapter是个什么角色呢?其实它的作用就是View界面和数据之间的桥梁。我们可以看作是界面数据绑定的一种理解,它所操纵的数据一般都是一些比较复杂的数据,如数组,链表,数据库,集合等。

常用的适配器有:

(1)ArrayAdapter;             数组作为数据源,填充的是ArrayAdapter   

(2)SimpleAdapter;           List作为数据源,填充的是SimpleAdapter

(3)SimpleCursorAdapter; 数据来源一般都是数据库查询得到的Cursor

(4)自定义适配器;               为什么要定义自己的适配器呢?原因就在于,当我们想用一些其它的展现方式,或者是我们需要的,呈现方式,这是就得DIY了。首先我们定义一个类让它继承自BaseAdapter,再让它实现一里面所说的那几个方法。那么这个自定义适配器就算好了。

下面我们看个实例就明白了:

一 .ArrayAdapter

1.xml代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="match_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="vertical" >
 6 
 7     <ListView
 8         android:id="@+id/myArrayList"
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content" />
11 
12 </LinearLayout>

2.java代码:

 1 package com.example.arrayadapter;
 2 
 3 import java.util.ArrayList;
 4 import android.app.Activity;
 5 import android.os.Bundle;
 6 import android.widget.ArrayAdapter;
 7 import android.widget.ListView;
 8 
 9 public class MainActivity extends Activity {
10     private ListView mListView;
11     private ArrayList<String> mArrayList = null;
12 
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         super.onCreate(savedInstanceState);
16         setContentView(R.layout.activity_main);
17         mListView = (ListView) findViewById(R.id.myArrayList);
18         mListView.setAdapter(new ArrayAdapter<String>(this,
19                 android.R.layout.simple_expandable_list_item_1, getData()));
20     }
21 
22     private ArrayList<String> getData() {
23         mArrayList = new ArrayList<String>();
24         mArrayList.add("item1");
25         mArrayList.add("item2");
26         mArrayList.add("item3");
27         mArrayList.add("item4");
28         mArrayList.add("item5");
29         mArrayList.add("item6");
30         mArrayList.add("item7");
31         mArrayList.add("item8");
32         mArrayList.add("item9");
33         mArrayList.add("item10");
34         return mArrayList;
35     }
36 }

3.效果图:

二.SimpleAdapter
 simpleAdapter的扩展性最好,可以定义各种各样的布局出来,可以放上ImageView(图片),还可以放上Button(按钮),CheckBox(复选框)等等。下面的代码都直接继承了ListActivity,ListActivity和普通的Activity没有太大的差别,不同就是对显示ListView做了许多优化,方面显示而已。

1.XML代码:

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:layout_width="fill_parent"
 4     android:layout_height="fill_parent"
 5     android:orientation="horizontal" >
 6 
 7     <ImageView
 8         android:id="@+id/img"
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:layout_margin="5px" />
12 
13     <LinearLayout
14         android:layout_width="wrap_content"
15         android:layout_height="wrap_content"
16         android:orientation="vertical" >
17 
18         <TextView
19             android:id="@+id/title"
20             android:layout_width="wrap_content"
21             android:layout_height="wrap_content"
22             android:textSize="30px" />
23 
24         <TextView
25             android:id="@+id/content"
26             android:layout_width="wrap_content"
27             android:layout_height="wrap_content"
28             android:textSize="20px" />
29     </LinearLayout>
30 
31 </LinearLayout>

2.java代码:

 1 package com.example.simpleadapter;
 2 
 3 import java.util.ArrayList;
 4 import java.util.HashMap;
 5 import java.util.List;
 6 import java.util.Map;
 7 import android.app.ListActivity;
 8 import android.os.Bundle;
 9 import android.widget.SimpleAdapter;
10 
11 public class MainActivity extends ListActivity {
12     @Override
13     public void onCreate(Bundle savedInstanceState) {
14         super.onCreate(savedInstanceState);
15         SimpleAdapter adapter = new SimpleAdapter(this, getData(),
16                 R.layout.simple, new String[] { "title", "content", "img" },
17                 new int[] { R.id.title, R.id.content, R.id.img });
18         setListAdapter(adapter);
19     }
20 
21     private List<Map<String, Object>> getData() {
22         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
23         Map<String, Object> map = new HashMap<String, Object>();
24         map.put("title", "SimpleAdapter");
25         map.put("content",
26                 "SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法");
27         map.put("img", R.drawable.m4);
28         list.add(map);
29 
30         map = new HashMap<String, Object>();
31         map.put("title", "SimpleAdapter");
32         map.put("content",
33                 "SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法");
34         map.put("img", R.drawable.m4);
35         list.add(map);
36 
37         map = new HashMap<String, Object>();
38         map.put("title", "SimpleAdapter");
39         map.put("content",
40                 "SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法");
41         map.put("img", R.drawable.m4);
42         list.add(map);
43 
44         map = new HashMap<String, Object>();
45         map.put("title", "SimpleAdapter");
46         map.put("content",
47                 "SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法SimpleAdapter用法");
48         map.put("img", R.drawable.m4);
49         list.add(map);
50 
51         return list;
52     }
53 }

3.效果图:

由于写在一个页面感觉太长了,所以下一篇继续总结SimpleCursorAdapter和自定义适配器~~~~~~~~~

posted @ 2014-11-11 17:09  Summers  阅读(380)  评论(0编辑  收藏  举报