收藏地址:http://www.oschina.net/android
BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner,ListView,GridView)来填充数据的。而(Spinner,ListView,GridView)都有自己的适配器(记起来麻烦)。但是BaseAdapter(一招鲜)对他们来说却是通用的,为什么这么说呢,首先我们看一下API文档:
我们看一下BaseAdapter已经实现了ListAdapter和SpinnerAdapter的接口,而GridView的适配器是实现了ListAdapter接口,只不过是二维的。所以说BaseAdapter对他们三者来说是通用的。
下面我来说一下BaseAdapter的主要用法.就是我们定义一个类(如:MyAdapter)而这个类继承BaseAdapter.因为它是implements了ListAdapter和SpinnerAdapter的接口,所以要实现里面的方法,代码如下(未作任何改动的):
01 |
private class MyAdapter extends BaseAdapter{ |
02 |
@Override |
03 |
public int getCount() { |
04 |
// TODO Auto-generated method stub |
05 |
return 0 ; |
06 |
} |
07 |
@Override |
08 |
public Object getItem( int arg0) { |
09 |
// TODO Auto-generated method stub |
10 |
return null ; |
11 |
} |
12 |
@Override |
13 |
public long getItemId( int position) { |
14 |
// TODO Auto-generated method stub |
15 |
return 0 ; |
16 |
} |
17 |
@Override |
18 |
public View getView( int position, View convertView, ViewGroup parent) { |
19 |
// TODO Auto-generated method stub |
20 |
return null ; |
21 |
} |
22 |
|
23 |
} |
01 |
<? xml version = "1.0" encoding = "utf-8" ?> |
02 |
< LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android" |
03 |
android:orientation = "vertical" |
04 |
android:layout_width = "fill_parent" |
05 |
android:layout_height = "fill_parent" |
06 |
> |
07 |
< TextView |
08 |
android:layout_width = "fill_parent" |
09 |
android:layout_height = "wrap_content" |
10 |
android:text = "Welcome to Mr Wei's Blog" |
11 |
/> |
12 |
< Spinner |
13 |
android:id = "@+id/spinner" |
14 |
android:layout_width = "fill_parent" |
15 |
android:layout_height = "wrap_content" |
16 |
/> |
17 |
< ListView |
18 |
android:id = "@+id/listview" |
19 |
android:layout_width = "fill_parent" |
20 |
android:layout_height = "wrap_content" |
21 |
/> |
22 |
< GridView |
23 |
android:id = "@+id/gridview" |
24 |
android:layout_width = "fill_parent" |
25 |
android:layout_height = "wrap_content" |
26 |
/> |
27 |
</ LinearLayout > |
第三步:修该BaseAdapterDemo.java代码如下:
01 |
package com.tutor.baseadapter; |
02 |
import android.app.Activity; |
03 |
import android.graphics.Color; |
04 |
import android.os.Bundle; |
05 |
import android.view.View; |
06 |
import android.view.ViewGroup; |
07 |
import android.widget.BaseAdapter; |
08 |
import android.widget.GridView; |
09 |
import android.widget.ListView; |
10 |
import android.widget.Spinner; |
11 |
import android.widget.TextView; |
12 |
public class BaseAdapterDemo extends Activity { |
13 |
|
14 |
private Spinner mSpinner; |
15 |
private ListView mListView; |
16 |
private GridView mGridView; |
17 |
private MyAdapter mMyAdapter; |
18 |
@Override |
19 |
public void onCreate(Bundle savedInstanceState) { |
20 |
super .onCreate(savedInstanceState); |
21 |
setContentView(R.layout.main); |
22 |
setupViews(); |
23 |
} |
24 |
|
25 |
public void setupViews(){ |
26 |
mMyAdapter = new MyAdapter(); |
27 |
mSpinner = (Spinner)findViewById(R.id.spinner); |
28 |
mSpinner.setAdapter(mMyAdapter); |
29 |
mListView = (ListView)findViewById(R.id.listview); |
30 |
mListView.setAdapter(mMyAdapter); |
31 |
mGridView = (GridView)findViewById(R.id.gridview); |
32 |
mGridView.setAdapter(mMyAdapter); |
33 |
mGridView.setNumColumns( 2 ); |
34 |
|
35 |
} |
36 |
|
37 |
//定义自己的适配器,注意getCount和getView方法 |
38 |
private class MyAdapter extends BaseAdapter{ |
39 |
@Override |
40 |
public int getCount() { |
41 |
// 这里我就返回10了,也就是一共有10项数据项 |
42 |
return 10 ; |
43 |
} |
44 |
@Override |
45 |
public Object getItem( int arg0) { |
46 |
return arg0; |
47 |
} |
48 |
@Override |
49 |
public long getItemId( int position) { |
50 |
return position; |
51 |
} |