转自:http://blog.csdn.net/wangjia55/article/details/7430759

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

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

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

private class MyAdapter extends BaseAdapter {@Overridepublic int getCount() {// TODO Auto-generated method stubreturn 0;}@Overridepublic Object getItem(int arg0) {// TODO Auto-generated method stubreturn null;}@Overridepublic long getItemId(int position) {// TODO Auto-generated method stubreturn 0;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubreturn null;}
}

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

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

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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Welcome to Mr Wei's Blog" /><Spinnerandroid:id="@+id/spinner"android:layout_width="fill_parent"android:layout_height="wrap_content"/><ListViewandroid:id="@+id/listview"android:layout_width="fill_parent"android:layout_height="wrap_content"/><GridViewandroid:id="@+id/gridview"android:layout_width="fill_parent"android:layout_height="wrap_content"/>
</LinearLayout>

第三步:修该BaseAdapterDemo.java代码如下:

package com.tutor.baseadapter;import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;public class BaseAdapterDemo extends Activity {private Spinner mSpinner;private ListView mListView;private GridView mGridView;private MyAdapter mMyAdapter;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);setupViews();}public void setupViews() {mMyAdapter = new MyAdapter();mSpinner = (Spinner) findViewById(R.id.spinner);mSpinner.setAdapter(mMyAdapter);mListView = (ListView) findViewById(R.id.listview);mListView.setAdapter(mMyAdapter);mGridView = (GridView) findViewById(R.id.gridview);mGridView.setAdapter(mMyAdapter);mGridView.setNumColumns(2);}// 定义自己的适配器,注意getCount和getView方法private class MyAdapter extends BaseAdapter {@Overridepublic int getCount() {// 这里我就返回10了,也就是一共有10项数据项return 10;}@Overridepublic Object getItem(int arg0) {return arg0;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {// position就是位置从0开始,convertView是Spinner,ListView中每一项要显示的view// 通常return 的view也就是convertView// parent就是父窗体了,也就是Spinner,ListView,GridView了.TextView mTextView = new TextView(getApplicationContext());mTextView.setText("BaseAdapterDemo");mTextView.setTextColor(Color.RED);return mTextView;}}
}

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

效果图一:

效果图二:

下面是我们的重点了,我们平常看的应用列表什么的,不是单单的一个TextView就可以了事的,所以我们可以在Layout里事先定义好布局。这里我新建了一个名叫baseadapter_provider.xml文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="fill_parent"><ImageViewandroid:id="@+id/imageView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/icon"/><TextViewandroid:id="@+id/textview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="BaseAdapter"/>
</LinearLayout>

将getView()方法修改如下:

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

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

转载于:https://www.cnblogs.com/dingchao823/p/4811205.html

【转】BaseAdapter用法相关推荐

  1. 【Android】Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法

    Android适配器之ArrayAdapter.SimpleAdapter和BaseAdapter的简单用法与有用代码片段 ArrayAdapter.SimpleAdapter和BaseAdapter ...

  2. Android适配器之ArrayAdapter、SimpleAdapter和BaseAdapter的简单用法与有用代码片段

    收藏ArrayAdapter.SimpleAdapter和BaseAdapter的一些简短代码片段,希望用时方便想起其用法. 1.ArrayAdapter 只可以简单的显示一行文本 代码片段: Arr ...

  3. Android之Adapter用法总结

    本文转自http://kb.cnblogs.com/a/2328334/,转载请注明原出处. Android之Adapter用法总结 作者:Devin Zhang  来源:博客园  发布时间:2012 ...

  4. android switcher控件,Android ViewSwitcher 的功能与用法

    ViewSwitcher 代表了视图切换组件, 本身继承了FrameLayout ,可以将多个View叠在一起 ,每次只显示一个组件.当程序控制从一个View切换到另个View时,ViewSwitch ...

  5. Android的Adapter用法总结

    Android之Adapter用法总结 1.Adapter概念   定义为将一个类的接口变换成客户端所期待的一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作.   在androi ...

  6. android开发 BaseAdapter中getView()里的3个参数是什么意思

    BaseAdapter适配器里有个getView()需要重写public View getView(int position,View converView,ViewGroup parent){ // ...

  7. LayoutInflater用法小结

    学习BaseAdapter时遇到了LayoutInflater,百度了其用法~总结如下 LayoutInflater的用法与findViewById()类似,通常用来将xml文件生成对应的View对象 ...

  8. SimpleAdapter的用法

    学习listView的时候,按照例子设定item的布局为系统提供的simple_list_item_single_choice.xml@frameworks/base/core/res/res/lay ...

  9. android butterknife 自定义view,ButterKnife用法详解.md

    # ButterKnife用法详解 ### 如何成为T型人才,垂直在一个行业中,必须要有一整套[知识体系](https://github.com/WeiSmart/Android-Advanced-C ...

最新文章

  1. 领域适配前沿研究——场景、方法与模型选择
  2. 计算机怎么设置本地硬盘启动不了,电脑bios怎么设置硬盘启动
  3. python表白源代码-python七夕浪漫表白源码
  4. MySQL - mysqldump多种方式实现数据迁移
  5. 基于原生javascript的ajax实现
  6. python训练手势分类器_python-Keras分类器的准确性在训练过程中稳定...
  7. 前端:CSS/13/HTML引入CSS的方法,CSS表格属性,盒子模型,上下外边距合并
  8. PostMan-使用笔记
  9. 航迹推演(Odometry)_由左右轮速度v_l,v_r推导车辆的线速度v,角速度w,运动半径r
  10. 分享几个下载豆瓣资源的chrome插件
  11. html 选择题代码,JS实现简单的选择题测评系统代码思路详解(demo)
  12. 数据可视化技术:python数据可视化工具库汇总(共21个)
  13. excel打不开html格式的文件,excel文件打不开提示格式无效怎么解决【图文】
  14. 平板示波器如何进行探头的补偿和衰减系数设定-Pintech品致
  15. 01_开关电源设计-电源反馈电路怎么设计?TL431配合光耦反馈电路实例设计
  16. 十年前开发的平板游戏:HyllCube 三维四子棋游戏,获得了全国一等奖
  17. 反甩锅成功后思考——RST 报文
  18. 有没有好用的证件照生成器?教你一键生成证件照
  19. 张栋推荐的machine-learning-for-hackers/
  20. 点评“最好的300款免费软件”

热门文章

  1. android 使用xml定义自己的View
  2. 又臭又长!流着泪我也要把它给改完!
  3. 因为一个跨域请求,我差点丢了饭碗!
  4. 指明方向与趋势!2019开发者技能报告出炉!!!
  5. 多线程:并发实现方法之J.U.C
  6. [Ljava.lang.Object; cannot be cast to com.gxuwz.check.entity.SysClasses
  7. html图片墙 无限滚动,尝试用CSS3实现无限循环的无缝滚动
  8. python爬虫专家_Python爬虫入门教程 27-100 微医挂号网专家团队数据抓取pyspider
  9. linux开放端口_Linux系统通过firewall限制或开放IP及端口 - 北方客888
  10. 中标麒麟桌面版yum安装mysql_中标麒麟Neokylin6桌面版如何本地yum安装软件