`
baobaoupup
  • 浏览: 466822 次
文章分类
社区版块
存档分类
最新评论

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. privateclassMyAdapterextendsBaseAdapter{
  2. @Override
  3. publicintgetCount(){
  4. //TODOAuto-generatedmethodstub
  5. return0;
  6. }
  7. @Override
  8. publicObjectgetItem(intarg0){
  9. //TODOAuto-generatedmethodstub
  10. returnnull;
  11. }
  12. @Override
  13. publiclonggetItemId(intposition){
  14. //TODOAuto-generatedmethodstub
  15. return0;
  16. }
  17. @Override
  18. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  19. //TODOAuto-generatedmethodstub
  20. returnnull;
  21. }
  22. }

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

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

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

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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="WelcometoMrWei'sBlog"
  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. packagecom.tutor.baseadapter;
  2. importandroid.app.Activity;
  3. importandroid.graphics.Color;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.ViewGroup;
  7. importandroid.widget.BaseAdapter;
  8. importandroid.widget.GridView;
  9. importandroid.widget.ListView;
  10. importandroid.widget.Spinner;
  11. importandroid.widget.TextView;
  12. publicclassBaseAdapterDemoextendsActivity{
  13. privateSpinnermSpinner;
  14. privateListViewmListView;
  15. privateGridViewmGridView;
  16. privateMyAdaptermMyAdapter;
  17. @Override
  18. publicvoidonCreate(BundlesavedInstanceState){
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. setupViews();
  22. }
  23. publicvoidsetupViews(){
  24. mMyAdapter=newMyAdapter();
  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. privateclassMyAdapterextendsBaseAdapter{
  35. @Override
  36. publicintgetCount(){
  37. //这里我就返回10了,也就是一共有10项数据项
  38. return10;
  39. }
  40. @Override
  41. publicObjectgetItem(intarg0){
  42. returnarg0;
  43. }
  44. @Override
  45. publiclonggetItemId(intposition){
  46. returnposition;
  47. }
  48. @Override
  49. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  50. //position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view
  51. //通常return的view也就是convertView
  52. //parent就是父窗体了,也就是Spinner,ListView,GridView了.
  53. TextViewmTextView=newTextView(getApplicationContext());
  54. mTextView.setText("BaseAdapterDemo");
  55. mTextView.setTextColor(Color.RED);
  56. returnmTextView;
  57. }
  58. }
  59. }

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

效果图一:

效果图二:

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

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  3. //position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view
  4. //通常return的view也就是convertView
  5. //parent就是父窗体了,也就是Spinner,ListView,GridView了.
  6. //TextViewmTextView=newTextView(getApplicationContext());
  7. //mTextView.setText("BaseAdapterDemo");
  8. //mTextView.setTextColor(Color.RED);
  9. //returnmTextView;
  10. //LayoutInflater不会的参照我的Android高手进阶教程(五)
  11. convertView=LayoutInflater.from(getApplicationContext()).inflate
  12. (R.layout.baseadapter_provider,null);
  13. TextViewmTextView=(TextView)convertView.findViewById(R.id.textview);
  14. mTextView.setText("BaseAdapterDemo"+position);
  15. mTextView.setTextColor(Color.RED);
  16. returnconvertView;
  17. }

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

Ok,搞定了,呵呵,到这里我就要和大家 说再见了。thx~


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

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

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

  1. privateclassMyAdapterextendsBaseAdapter{
  2. @Override
  3. publicintgetCount(){
  4. //TODOAuto-generatedmethodstub
  5. return0;
  6. }
  7. @Override
  8. publicObjectgetItem(intarg0){
  9. //TODOAuto-generatedmethodstub
  10. returnnull;
  11. }
  12. @Override
  13. publiclonggetItemId(intposition){
  14. //TODOAuto-generatedmethodstub
  15. return0;
  16. }
  17. @Override
  18. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  19. //TODOAuto-generatedmethodstub
  20. returnnull;
  21. }
  22. }

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

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

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

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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="WelcometoMrWei'sBlog"
  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. packagecom.tutor.baseadapter;
  2. importandroid.app.Activity;
  3. importandroid.graphics.Color;
  4. importandroid.os.Bundle;
  5. importandroid.view.View;
  6. importandroid.view.ViewGroup;
  7. importandroid.widget.BaseAdapter;
  8. importandroid.widget.GridView;
  9. importandroid.widget.ListView;
  10. importandroid.widget.Spinner;
  11. importandroid.widget.TextView;
  12. publicclassBaseAdapterDemoextendsActivity{
  13. privateSpinnermSpinner;
  14. privateListViewmListView;
  15. privateGridViewmGridView;
  16. privateMyAdaptermMyAdapter;
  17. @Override
  18. publicvoidonCreate(BundlesavedInstanceState){
  19. super.onCreate(savedInstanceState);
  20. setContentView(R.layout.main);
  21. setupViews();
  22. }
  23. publicvoidsetupViews(){
  24. mMyAdapter=newMyAdapter();
  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. privateclassMyAdapterextendsBaseAdapter{
  35. @Override
  36. publicintgetCount(){
  37. //这里我就返回10了,也就是一共有10项数据项
  38. return10;
  39. }
  40. @Override
  41. publicObjectgetItem(intarg0){
  42. returnarg0;
  43. }
  44. @Override
  45. publiclonggetItemId(intposition){
  46. returnposition;
  47. }
  48. @Override
  49. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  50. //position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view
  51. //通常return的view也就是convertView
  52. //parent就是父窗体了,也就是Spinner,ListView,GridView了.
  53. TextViewmTextView=newTextView(getApplicationContext());
  54. mTextView.setText("BaseAdapterDemo");
  55. mTextView.setTextColor(Color.RED);
  56. returnmTextView;
  57. }
  58. }
  59. }

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

效果图一:

效果图二:

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

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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. publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
  3. //position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view
  4. //通常return的view也就是convertView
  5. //parent就是父窗体了,也就是Spinner,ListView,GridView了.
  6. //TextViewmTextView=newTextView(getApplicationContext());
  7. //mTextView.setText("BaseAdapterDemo");
  8. //mTextView.setTextColor(Color.RED);
  9. //returnmTextView;
  10. //LayoutInflater不会的参照我的Android高手进阶教程(五)
  11. convertView=LayoutInflater.from(getApplicationContext()).inflate
  12. (R.layout.baseadapter_provider,null);
  13. TextViewmTextView=(TextView)convertView.findViewById(R.id.textview);
  14. mTextView.setText("BaseAdapterDemo"+position);
  15. mTextView.setTextColor(Color.RED);
  16. returnconvertView;
  17. }

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

Ok,搞定了,呵呵,到这里我就要和大家 说再见了。thx~

分享到:
评论

相关推荐

    Android高手进阶教程与Android基础教程

    Android高手进阶教程之----Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!.doc Android高手进阶教程之----通过Location获取Address的使用.doc Android基础教程之----Android ProgressBar的使用.doc...

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

    NULL 博文链接:https://chaowen0668.iteye.com/blog/1017481

    Spinner+ListView+GridView填充BaseAdapter

    本Demo演示了Spinner+ListView+GridView分别采用BaseAdapter填充内容 【简单易懂,含全注释】 注:创建版本为Android4.4.2

    BaseAdapter, 适用于GridView,Spinner,ListView

    博客源码,需要的下载。主要讲解了BaseAdapter适配器的使用方法。 BaseAdapter, 适用于GridView,Spinner,ListView

    Android帮助文档及一些资料打包放送

    [Android1_6]继承BaseAdapter为GridView设置数据时设置setLayoutParams时注意 - 农民伯伯 - 博客园.mht349.26 KB [Android]ListView性能优化之视图缓存 - 农民伯伯 - 博客园.mht513.31 KB [Android]ListView性能优化...

    Android中BaseAdapter用法示例

    BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter BaseAdapter Java代码: public class ...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...

    Google Android SDK开发范例大全的目录

    8.5 将网络图像网址放入Gallery中显示——URL.URLConnection.BaseAdapter 8.6 即时访问网络图文件展示——HttpURLConnection 8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过...

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    Google Android SDK开发范例大全(完整版) 包含部分书中源码 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 ...

    Google Android SDK 开发范例大全01

    Google Android SDK开发范例大全 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1 安装AndroidSDK与...

    Google Android SDK 开发范例大全02

    Google Android SDK开发范例大全 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1 安装AndroidSDK与...

    Android SimpleAdapter适配器使用详解

    Android的AdapterView用的比较多,ListView,GridView,Spinner等,原生的BaseAdapter对ViewHolder没有支持,每次都要,定义内部类,inflater根布局,对item内部view设置clicklistener并转发到adapter的调用者等。...

    Google Android sdk 开发范例大全 部分章节代码

    8.5 将网络图像网址放入Gallery中显示——URL.URLConnection.BaseAdapter 8.6 即时访问网络图文件展示——HttpURLConnection 8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过...

    Google+Android+SDK开发范例大全

    4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——ListView的布局 4.20 以动态列表配置选项——ListActivity与Menu整合技巧 4.21 查找程序根目录下所有文件——JavaI/O与...

    Google Android SDK开发范例大全(完整版)

    8.5 将网络图像网址放入Gallery中显示——URL.URLConnection.BaseAdapter 8.6 即时访问网络图文件展示——HttpURLConnection 8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过...

Global site tag (gtag.js) - Google Analytics