Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!

大家好!今天给大家讲解一下BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner,ListView,GridView)来填充数据的。而(Spinner,ListView,GridView)都有自己的适配器(记起来麻烦)。但是BaseAdapter(一招鲜)对他们来说却是通用的,为什么这么说呢,首先我们看一下API文档:

我们看一下BaseAdapter已经实现了ListAdapter和SpinnerAdapter的接口,而GridView的适配器是实现了ListAdapter接口,只不过是二维的。所以说BaseAdapter对他们三者来说是通用的。

下面我来说一下BaseAdapter的主要用法.就是我们定义一个类(如:MyAdapter)而这个类继承BaseAdapter.因为它是implements了ListAdapter和SpinnerAdapter的接口,所以要实现里面的方法,代码如下(未作任何改动的):

 

  1. private class MyAdapter extends BaseAdapter{      
  2.     @Override     
  3.     public int getCount() {      
  4.         // TODO Auto-generated method stub      
  5.         return 0;      
  6.     }      
  7.     @Override     
  8.     public Object getItem(int arg0) {      
  9.         // 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.    }    

 

为了便于大家理解,老规矩写一个简单的Demo,大家按我的步骤来就OK了.

第一步:新建一个Android工程命名为BaseAdapterDemo.

第二步:修改main.xml代码如下:

 

  1. <?xml version="1.0" encoding="utf-8"?>      
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     
  3.     android:orientation="vertical"     
  4.     android:layout_width="fill_parent"     
  5.     android:layout_height="fill_parent"     
  6.     >      
  7.     <TextView        
  8.         android:layout_width="fill_parent"       
  9.         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代码如下:

 

  1. package com.tutor.baseadapter;      
  2. import android.app.Activity;      
  3. import android.graphics.Color;      
  4. import android.os.Bundle;      
  5. import android.view.View;      
  6. import android.view.ViewGroup;      
  7. import android.widget.BaseAdapter;      
  8. import android.widget.GridView;      
  9. 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.         }      
  52.         @Override     
  53.         public View getView(int position, View convertView, ViewGroup parent) {      
  54.             // position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view      
  55.             //通常return 的view也就是convertView      
  56.             //parent就是父窗体了,也就是Spinner,ListView,GridView了.      
  57.             TextView mTextView = new TextView(getApplicationContext());      
  58.             mTextView.setText("BaseAdapterDemo");      
  59.             mTextView.setTextColor(Color.RED);      
  60.             return mTextView;      
  61.         }      
  62.               
  63.     }      
  64. }    

 

第四步:运行程序效果图如下:

效果图一:

效果图二:

等等,平时我在这里就和大家告别了,今天还没完呵呵,因为下面是我们的重点了,我们平常看的应用列表什么的,不是单单的一个TextView就可以了事的,所以我们可以在Layout里事先 定义好布局。这里我新建了一个名叫baseadapter_provider.xml文件,代码如下:

 

  1. <?xml version="1.0" encoding="utf-8"?>      
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     
  3.     android:orientation="horizontal"     
  4.     android:layout_width="fill_parent"     
  5.     android:layout_height="fill_parent"     
  6.     >      
  7.     <ImageView      
  8.         android:id="@+id/imageView"        
  9.         android:layout_width="wrap_content"       
  10.         android:layout_height="wrap_content"       
  11.         android:src="@drawable/icon"     
  12.     />      
  13.     <TextView      
  14.         android:id="@+id/textview"        
  15.         android:layout_width="wrap_content"       
  16.         android:layout_height="wrap_content"       
  17.         android:text="BaseAdapter"     
  18.     />      
  19. </LinearLayout>    

 

将getView()方法修改如下:

 

  1. @Override     
  2.         public View getView(int position, View convertView, ViewGroup parent) {      
  3.             // position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view      
  4.             //通常return 的view也就是convertView      
  5.             //parent就是父窗体了,也就是Spinner,ListView,GridView了.      
  6. //          TextView mTextView = new TextView(getApplicationContext());      
  7. //          mTextView.setText("BaseAdapterDemo");      
  8. //          mTextView.setTextColor(Color.RED);      
  9. //          return mTextView;      
  10.                   
  11.             //LayoutInflater不会的参照我的 Android 高手进阶教程(五)      
  12.             convertView = LayoutInflater.from(getApplicationContext()).inflate      
  13.             (R.layout.baseadapter_provider,null);      
  14.                   
  15.             TextView mTextView = (TextView)convertView.findViewById(R.id.textview);      
  16.             mTextView.setText("BaseAdapterDemo" + position);      
  17.             mTextView.setTextColor(Color.RED);      
  18.             return convertView;      
  19.         }    

 

再次运行看一下效果图如下:

Ok,搞定了,呵呵~!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值