Android BaseAdapter(Spinner,ListView,GridView)的使用

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

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

java代码:
  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. }
复制代码
为了便于大家理解,老规矩写一个简单的Demo,大家按我的步骤来就OK了.
       第一步:新建一个Android工程命名为BaseAdapterDemo.
       第二步:修改main.xml代码如下:

java代码
  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代码如下:

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. private Spinner mSpinner;
  14. private ListView mListView;
  15. private GridView mGridView;
  16. private MyAdapter mMyAdapter;
  17. @Override
  18. public void onCreate(Bundle savedInstanceState) {
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. setupViews();
  22. }

  23. public void setupViews(){
  24. mMyAdapter = new MyAdapter();
  25. mSpinner = (Spinner)findViewById(R.id.spinner);
  26. mSpinner.setAdapter(mMyAdapter);
  27. mListView = (ListView)findViewById(R.id.listview);
  28. mListView.setAdapter(mMyAdapter);
  29. mGridView = (GridView)findViewById(R.id.gridview);
  30. mGridView.setAdapter(mMyAdapter);
  31. mGridView.setNumColumns(2);

  32. }

  33. //定义自己的适配器,注意getCount和getView方法
  34. private class MyAdapter extends BaseAdapter{
  35. @Override
  36. public int getCount() {
  37. // 这里我就返回10了,也就是一共有10项数据项
  38. return 10;
  39. }
  40. @Override
  41. public Object getItem(int arg0) {
  42. return arg0;
  43. }
  44. @Override
  45. public long getItemId(int position) {
  46. return position;
  47. }
  48. @Override
  49. public View getView(int position, View convertView, ViewGroup parent) {
  50. // position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view
  51. //通常return 的view也就是convertView
  52. //parent就是父窗体了,也就是Spinner,ListView,GridView了.
  53. TextView mTextView = new TextView(getApplicationContext());
  54. mTextView.setText("BaseAdapterDemo");
  55. mTextView.setTextColor(Color.RED);
  56. return mTextView;
  57. }

  58. }
  59. }
复制代码


1.png
2011-9-30 10:52 上传
下载附件 (74.22 KB)
前天 10:26 上传
下载附件 (74.22 KB)




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

       java代码:
  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()方法修改如下:

java代码:
  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. //LayoutInflater不会的参照我的 Android 高手进阶教程(五)
  11. convertView = LayoutInflater.from(getApplicationContext()).inflate
  12. (R.layout.baseadapter_provider,null);

  13. TextView mTextView = (TextView)convertView.findViewById(R.id.textview);
  14. mTextView.setText("BaseAdapterDemo" + position);
  15. mTextView.setTextColor(Color.RED);
  16. return convertView;
  17. }
复制代码

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值