Android中BaseAdapter的使用

Android中BaseAdapter的使用

                                                                                          2013-05-17      22:28:02

    通常在UI布局中会要用到ListView、Spinner、GridView等控件。而使用这些控件的时候会要用到适配器,适配器模式的可以看做数据与UI之间的桥梁。

    在Android中主要提供了ArrayAdapter、SimpleAdapter、SimpleCursorAdapter、BaseAdapter......

    ArrayAdapter比较简单,但它只能用于显示文字。而SimpleAdapter则有很强的扩展性,可以自定义出各种效果,SimpleCursorAdapter则可以从数据库中读取数据显示在列表上,通过从写BaseAdapter可以在列表上加处理的事件等。

   通过最近对Adapter的了解,我还是不能很好的区分它们使用的情况。

   在这里我主要分享一下常用的SimpleAdapter、BaseAdapter的区别(不知道是不是正确,有待考察)

   区别一:数据来源的不同

             BaseAdapter、SimpleAdapter:---数据来源于Arraylist-->MyArraylist 

              SimpleCursorAdapter:---数据来源于数据库--->MyCursor 

   区别二:BaseAdapter添加过的Item在下一次显示时是不需要重新构造的,这样可以大大提高效率。这主要是通过paramView.setTag(holder);来实现的,paramView是BaseAdapter中的一个参数,setTag()方法是设置标记,通过该方法就可以将已经浏览过的Item通过标记下次不再重构。

 

    下面分享一下建立的一个BaseAdapter实例:

1、建立一个适配器类MyAdapter继承BaseAdapter

 

 1 public class MyAdapter extends BaseAdapter{
 2 
 3     @Override
 4     public int getCount() {
 5         // TODO Auto-generated method stub
 6         return 10;//一共放回了10个数据
 7     }
 8 
 9     @Override
10     public Object getItem(int position) {
11         // TODO Auto-generated method stub
12         return null;
13     }
14 
15     @Override
16     public long getItemId(int position) {
17         // TODO Auto-generated method stub
18         return 0;
19     }
20 
21     
22     /**
23      * Positionj就是位置从0开始,convertView就是Spinner和ListView中每一项要显示的View
24      * 通常return的View就是convertView
25      * parent是父窗口,即Spinner,ListView,GridView
26      */
27     @Override
28     public View getView(int position, View convertView, ViewGroup parent) {
29         // TODO Auto-generated method stub
30         TextView mTextView = new TextView(MyApplication.getAppContext());
31         mTextView.setText("BaseAdapterDemo");
32         mTextView.setTextColor(Color.BLUE);
33         return mTextView;
34     }
35 
36 
37 }

 

2、建立一个MyApplication类,该类主要是用来给非Activity类传递Context对象的

 1 /**
 2  * MyApplication类的建立一定要在AndroidManifest.xml中进行说明
 3  * <application
 4         android:name="MyApplication"
 5  * @author Administrator
 6  *
 7  */
 8 public class MyApplication extends Application{
 9     private static Context context;
10 
11     @Override
12     public void onCreate() {
13         // TODO Auto-generated method stub
14 //        getApplicationContext() 返回应用的上下文,生命周期是整个应用,应用摧毁它才摧毁
15 //        Activity.this的context 返回当前activity的上下文,属于activity ,activity 摧毁他就摧毁
16         context = this.getApplicationContext();
17         super.onCreate();
18     }
19     
20     public static Context getAppContext(){
21         return context;
22         
23     }
24 
25 }


3、建立BaseAdapterDemo

 1 public class BaseAdapterDemo extends Activity {
 2     private Spinner mSpinner;
 3     private ListView mListView;
 4     private GridView mGridView;
 5     private MyAdapter mMyAdapter;
 6 
 7     @Override
 8     protected void onCreate(Bundle savedInstanceState) {
 9         super.onCreate(savedInstanceState);
10         setContentView(R.layout.activity_main);
11         setupView();
12     }
13 
14     /**
15      * 建立视图
16      */
17     private void setupView() {
18         // TODO Auto-generated method stub
19         mMyAdapter = new MyAdapter();
20         mSpinner = (Spinner) findViewById(R.id.mSpinner);
21         mSpinner.setAdapter(mMyAdapter);
22         mListView = (ListView) findViewById(R.id.mListView);
23         mListView.setAdapter(mMyAdapter);
24         mGridView = (GridView) findViewById(R.id.mGridView);
25         mGridView.setAdapter(mMyAdapter);
26         mGridView.setNumColumns(2);//设置GridView的列数
27     }
28 
29 }

  这里实现了Spinner、ListView、GridView添加Adapter

4、实现效果如下

   当然,以上只是我对Android中Adapter的一点点认识,还要在后面的学习中不断积累经验。

 

            

 

posted @ 2013-05-17 22:52  蠢驴  阅读(320)  评论(0)    收藏  举报