Android开发网站收藏,及BaseAdapter使用

收藏地址:http://www.oschina.net/android

Android 中万能的 BaseAdapter(Spinner,ListView,GridView) 的使用!

地址: http://www.oschina.net/question/195301_31331

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    }

为了便于大家理解,老规矩写一个简单的Demo,大家按我的步骤来就OK了.
第一步:新建一个Android工程命名为BaseAdapterDemo.
第二步:修改main.xml代码如下:
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         
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文件,代码如下:
01 <?xml version="1.0" encoding="utf-8"?> 
02 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
03     android:orientation="horizontal" 
04     android:layout_width="fill_parent" 
05     android:layout_height="fill_parent" 
06     
07     <ImageView 
08         android:id="@+id/imageView"   
09         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><span style="font-family:''sans serif', tahoma, verdana, helvetica';font-size:x-small;"><span style="line-height:19px;white-space:normal;"> </span></span>

将getView()方法修改如下:
01     @Override 
02         public View getView(int position, View convertView, ViewGroup parent) { 
03             // position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view  
04             //通常return 的view也就是convertView  
05             //parent就是父窗体了,也就是Spinner,ListView,GridView了.  
06 //          TextView mTextView = new TextView(getApplicationContext());  
07 //          mTextView.setText("BaseAdapterDemo");  
08 //          mTextView.setTextColor(Color.RED);  
09 //          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         }

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

注:本文来源于网络,具体出处无从考察。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值