大家好!今天给大家讲解一下BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner,ListView,GridView)来填充数据的。而(Spinner,ListView,GridView)都有自己的适配器(记起来麻烦)。但是BaseAdapter(一招鲜)对他们来说却是通用的,为什么这么说呢,首先我们看一下API文档:
我们看一下BaseAdapter已经实现了ListAdapter和SpinnerAdapter的接口,而GridView的适配器是实现了ListAdapter接口,只不过是二维的。所以说BaseAdapter对他们三者来说是通用的。
下面我来说一下BaseAdapter的主要用法.就是我们定义一个类(如:MyAdapter)而这个类继承BaseAdapter.因为它是implements了ListAdapter和SpinnerAdapter的接口,所以要实现里面的方法,代码如下(未作任何改动的):
- privateclassMyAdapterextendsBaseAdapter{
- @Override
- publicintgetCount(){
- return0;
- }
- @Override
- publicObjectgetItem(intarg0){
- returnnull;
- }
- @Override
- publiclonggetItemId(intposition){
- return0;
- }
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- returnnull;
- }
- }
为了便于大家理解,老规矩写一个简单的Demo,大家按我的步骤来就OK了.
第一步:新建一个Android工程命名为BaseAdapterDemo.
第二步:修改main.xml代码如下:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="WelcometoMrWei'sBlog"
- />
- <Spinner
- android:id="@+id/spinner"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <ListView
- android:id="@+id/listview"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <GridView
- android:id="@+id/gridview"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
第三步:修该BaseAdapterDemo.java代码如下:
- packagecom.tutor.baseadapter;
- importandroid.app.Activity;
- importandroid.graphics.Color;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.ViewGroup;
- importandroid.widget.BaseAdapter;
- importandroid.widget.GridView;
- importandroid.widget.ListView;
- importandroid.widget.Spinner;
- importandroid.widget.TextView;
- publicclassBaseAdapterDemoextendsActivity{
- privateSpinnermSpinner;
- privateListViewmListView;
- privateGridViewmGridView;
- privateMyAdaptermMyAdapter;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- setupViews();
- }
- publicvoidsetupViews(){
- mMyAdapter=newMyAdapter();
- 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);
- }
- privateclassMyAdapterextendsBaseAdapter{
- @Override
- publicintgetCount(){
- return10;
- }
- @Override
- publicObjectgetItem(intarg0){
- returnarg0;
- }
- @Override
- publiclonggetItemId(intposition){
- returnposition;
- }
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- TextViewmTextView=newTextView(getApplicationContext());
- mTextView.setText("BaseAdapterDemo");
- mTextView.setTextColor(Color.RED);
- returnmTextView;
- }
- }
- }
第四步:运行程序效果图如下:
效果图一:
效果图二:
等等,平时我在这里就和大家告别了,今天还没完呵呵,因为下面是我们的重点了,我们平常看的应用列表什么的,不是单单的一个TextView就可以了事的,所以我们可以在Layout里事先 定义好布局。这里我新建了一个名叫baseadapter_provider.xml文件,代码如下:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <ImageView
- android:id="@+id/imageView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/icon"
- />
- <TextView
- android:id="@+id/textview"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="BaseAdapter"
- />
- </LinearLayout>
将getView()方法修改如下:
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- convertView=LayoutInflater.from(getApplicationContext()).inflate
- (R.layout.baseadapter_provider,null);
- TextViewmTextView=(TextView)convertView.findViewById(R.id.textview);
- mTextView.setText("BaseAdapterDemo"+position);
- mTextView.setTextColor(Color.RED);
- returnconvertView;
- }
再次运行看一下效果图如下:
Ok,搞定了,呵呵,到这里我就要和大家 说再见了。thx~
大家好!今天给大家讲解一下BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner,ListView,GridView)来填充数据的。而(Spinner,ListView,GridView)都有自己的适配器(记起来麻烦)。但是BaseAdapter(一招鲜)对他们来说却是通用的,为什么这么说呢,首先我们看一下API文档:
我们看一下BaseAdapter已经实现了ListAdapter和SpinnerAdapter的接口,而GridView的适配器是实现了ListAdapter接口,只不过是二维的。所以说BaseAdapter对他们三者来说是通用的。
下面我来说一下BaseAdapter的主要用法.就是我们定义一个类(如:MyAdapter)而这个类继承BaseAdapter.因为它是implements了ListAdapter和SpinnerAdapter的接口,所以要实现里面的方法,代码如下(未作任何改动的):
- privateclassMyAdapterextendsBaseAdapter{
- @Override
- publicintgetCount(){
- return0;
- }
- @Override
- publicObjectgetItem(intarg0){
- returnnull;
- }
- @Override
- publiclonggetItemId(intposition){
- return0;
- }
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- returnnull;
- }
- }
为了便于大家理解,老规矩写一个简单的Demo,大家按我的步骤来就OK了.
第一步:新建一个Android工程命名为BaseAdapterDemo.
第二步:修改main.xml代码如下:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="WelcometoMrWei'sBlog"
- />
- <Spinner
- android:id="@+id/spinner"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <ListView
- android:id="@+id/listview"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- <GridView
- android:id="@+id/gridview"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- />
- </LinearLayout>
第三步:修该BaseAdapterDemo.java代码如下:
- packagecom.tutor.baseadapter;
- importandroid.app.Activity;
- importandroid.graphics.Color;
- importandroid.os.Bundle;
- importandroid.view.View;
- importandroid.view.ViewGroup;
- importandroid.widget.BaseAdapter;
- importandroid.widget.GridView;
- importandroid.widget.ListView;
- importandroid.widget.Spinner;
- importandroid.widget.TextView;
- publicclassBaseAdapterDemoextendsActivity{
- privateSpinnermSpinner;
- privateListViewmListView;
- privateGridViewmGridView;
- privateMyAdaptermMyAdapter;
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- setupViews();
- }
- publicvoidsetupViews(){
- mMyAdapter=newMyAdapter();
- 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);
- }
- privateclassMyAdapterextendsBaseAdapter{
- @Override
- publicintgetCount(){
- return10;
- }
- @Override
- publicObjectgetItem(intarg0){
- returnarg0;
- }
- @Override
- publiclonggetItemId(intposition){
- returnposition;
- }
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- TextViewmTextView=newTextView(getApplicationContext());
- mTextView.setText("BaseAdapterDemo");
- mTextView.setTextColor(Color.RED);
- returnmTextView;
- }
- }
- }
第四步:运行程序效果图如下:
效果图一:
效果图二:
等等,平时我在这里就和大家告别了,今天还没完呵呵,因为下面是我们的重点了,我们平常看的应用列表什么的,不是单单的一个TextView就可以了事的,所以我们可以在Layout里事先 定义好布局。这里我新建了一个名叫baseadapter_provider.xml文件,代码如下:
- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <ImageView
- android:id="@+id/imageView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:src="@drawable/icon"
- />
- <TextView
- android:id="@+id/textview"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="BaseAdapter"
- />
- </LinearLayout>
将getView()方法修改如下:
- @Override
- publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
- convertView=LayoutInflater.from(getApplicationContext()).inflate
- (R.layout.baseadapter_provider,null);
- TextViewmTextView=(TextView)convertView.findViewById(R.id.textview);
- mTextView.setText("BaseAdapterDemo"+position);
- mTextView.setTextColor(Color.RED);
- returnconvertView;
- }
再次运行看一下效果图如下:
Ok,搞定了,呵呵,到这里我就要和大家 说再见了。thx~
分享到:
相关推荐
Android高手进阶教程之----Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!.doc Android高手进阶教程之----通过Location获取Address的使用.doc Android基础教程之----Android ProgressBar的使用.doc...
NULL 博文链接:https://chaowen0668.iteye.com/blog/1017481
本Demo演示了Spinner+ListView+GridView分别采用BaseAdapter填充内容 【简单易懂,含全注释】 注:创建版本为Android4.4.2
博客源码,需要的下载。主要讲解了BaseAdapter适配器的使用方法。 BaseAdapter, 适用于GridView,Spinner,ListView
[Android1_6]继承BaseAdapter为GridView设置数据时设置setLayoutParams时注意 - 农民伯伯 - 博客园.mht349.26 KB [Android]ListView性能优化之视图缓存 - 农民伯伯 - 博客园.mht513.31 KB [Android]ListView性能优化...
BaseAdapter就Android应用程序中经常用到的基础数据适配器,它的主要用途是将一组数据传到像ListView、Spinner、Gallery及GridView等UI显示组件,它是继承自接口类Adapter BaseAdapter Java代码: public class ...
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...
Google Android SDK开发范例大全(完整版)共4个分卷 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1...
8.5 将网络图像网址放入Gallery中显示——URL.URLConnection.BaseAdapter 8.6 即时访问网络图文件展示——HttpURLConnection 8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过...
Google Android SDK开发范例大全(完整版) 包含部分书中源码 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 ...
Google Android SDK开发范例大全 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1 安装AndroidSDK与...
Google Android SDK开发范例大全 目录 第1章 了解.深入.动手做. 1.1 红透半边天的Android 1.2 本书目的及涵盖范例范围 1.3 如何阅读本书 1.4 使用本书范例 1.5 参考网站 第2章 Android初体验 2.1 安装AndroidSDK与...
Android的AdapterView用的比较多,ListView,GridView,Spinner等,原生的BaseAdapter对ViewHolder没有支持,每次都要,定义内部类,inflater根布局,对item内部view设置clicklistener并转发到adapter的调用者等。...
8.5 将网络图像网址放入Gallery中显示——URL.URLConnection.BaseAdapter 8.6 即时访问网络图文件展示——HttpURLConnection 8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过...
4.18 动态文字排版——GridView与ArrayAdapter设计 4.19 在Activity里显示列表列表——ListView的布局 4.20 以动态列表配置选项——ListActivity与Menu整合技巧 4.21 查找程序根目录下所有文件——JavaI/O与...
8.5 将网络图像网址放入Gallery中显示——URL.URLConnection.BaseAdapter 8.6 即时访问网络图文件展示——HttpURLConnection 8.7 手机气象局,实时卫星云图——HttpURLConnection与URLConnection和运行线程 8.8 通过...