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

Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用! 大家好!今天给大家讲解一下BaseAdapter(基础适配器)的用法,适配器的作用主要是用来给诸如(Spinner,ListView,GridView)来填充数据的。但是(Spinner,ListView,GridView)都有自己的适配器。但是BaseAdapter对他们来说却是通用的,为什么这么说呢,首先我们看一下API文档:我们看一下BaseAdapter已经实现了ListAdapter和SpinnerAdapter的接口,而GridView的适配器是实现了ListAdapter接口,只不过是二维的。 阅读详情

转载自:http://blog.youkuaiyun.com/android_tutor/article/details/5707835


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

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

 

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

 

  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.       
  23.    }  

 

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

 

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

 

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

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

  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.      
  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文件,代码如下:

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

  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.               
  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.         }  

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


集合ListView显示,Spinner筛选 集合ListView显示,Spinner筛选,在开发过程中数据ArrayList数据HashMap据显示在ListVew 显示使用的概率蛮高的。在开发过程中灵活的使用的集合也是考验开发人员的功底的一个指数。同时demo中添加一个Spinner分类筛选功能。 立即下载

相关推荐

麒麟V10系统下CoreDump文件自动归档与快速定位指南(附coredumpctl实战)

本文详细介绍了在麒麟V10操作系统下,如何利用systemd-coredump机制和coredumpctl工具实现CoreDump文件的自动化管理与高效调试。内容涵盖从系统架构解析、自动化配置策略,到使用coredumpctl进行快速查询、过滤与深度分析的实战指南,旨在帮助运维人员和开发者快速定位系统崩溃的根本原因,提升问题排查效率。

gg901的博客 222

BaseAdapter详解

BaseAdapter详解 1.使用BaseAdapter的步骤 在layout中编写一个ListView 创建一个数据源,这里简单的用一个List Map集合来代替 编写一个MyBaseAdapter的java文件继承自BaseAdapter并实现它的四个基础方法 在ListView、GridView或者其他的view中,使用setAdapter方法传入我们的baseAdapter中。 ...

qq_40304794的博客 9315

手把手教你用光耦搭建安全隔离电路:从洗衣机控制板到PLC输入模块实战

本文通过洗衣机控制板驱动高压电机和PLC输入模块采集现场信号两个实战场景,手把手教你使用光耦搭建安全隔离电路。文章详细解析了电路架构、关键器件选型、参数计算、仿真验证及PCB布局避坑技巧,并对比了光耦与数字隔离器的适用场景,帮助电子工程师掌握这门保障系统稳定与安全的必备技能。

h6j7k8l9p0的博客 463

BaseAdapter的简单使用

BaseAdapter的简单使用 很多刚学习安卓的小伙伴初次碰到使用BaseAdapter创建一个ListView的时候,总是感觉:这代码太多了呀,哪里看得懂嘛! 其实啊,你只要弄清楚这一点原理,就会觉得,也不是那么难嘛! 有小伙伴就要说了,搞得懂原理我还会来看你的文章?搞笑! 别急,我这就给你解释,上代码! activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

weixin_46067095的博客 5830

双三相电机控制避坑指南:为什么你的SVPWM谐波大?四矢量调制实战解析

本文深入解析双三相电机控制中SVPWM谐波大的问题,并提供四矢量调制实战方案。通过分析谐波来源、四矢量调制原理及工程实现步骤,显著降低电流THD至3-5%,提升系统效率2.3个百分点。特别适合需要优化电机控制的工程师参考。

weixin_30645617的博客 397

人工智能之语言领域 自然语言处理 第六章 情感分析

情感分析(Sentiment Analysis),又称意见挖掘(Opinion Mining),旨在自动识别和提取文本中表达的主观情感、态度或情绪。从用户评论到社交媒体,从产品反馈到政治舆情,情感分析已成为企业决策、品牌监控和人机交互的关键技术。本章将深入介绍情感分析的层级结构、核心技术、主流模型,并通过社交媒体舆情实战案例完整演示分析与可视化流程。层级目标示例词级(Word-level)判断单个词的情感倾向“好” → 正面;“差” → 负面句级(Sentence-level)判断整个句子的情感极性。

咚咚王者的博客 857

Android适配器之BaseAdapter

1.BaseAdapter是什么 BaseAdapter是一种Adapter,在Android中,Adapter为适配器,可以构建数据源与视图展示的桥梁,从而让数据源与视图展示相互关联,同时又解除耦合。Adapter与数据源、视图展示的关系如下。 这其中,BaseAdapter是其中最有名的Adapter,提供了ListAdapter和SpinnerAdapter的接口,提供了适配多种视图(Spinner,ListView,GridView)的接口。(详见https://t...

wangzhezhilu001的专栏 2209

手把手带你编写miniQMT实盘量化执行程序(3) | 交易系统

本文介绍了miniQMT实盘量化执行系统的核心交易系统代码,重点讲解了其模块化设计和工作流程。系统采用主控类LiveSystem管理交易全流程,包含初始化引擎、交易日判断、交易时段划分(开盘前、盘中、收盘等)、主循环调度和异常处理等核心功能。作者详细解析了系统如何实现365天不间断运行、精准判断交易日、分阶段执行交易策略等功能,并强调系统的稳定性和异常处理机制。

1306

【android】ListView之BaseAdapter使用详解

android中ListView是一个比较常用的控件,它用于方便的列表显示可见数据,当数据过多时,会出现滚动条,并且可以根据屏幕长度进行自适应显示。

此成非彼诚博客 1万+

Multisim实战:从零搭建体温检测报警电路(附完整仿真文件+调试技巧)

本文详细介绍了如何使用Multisim从零搭建体温检测报警电路,涵盖LM35温度传感器、LM358运算放大器等核心器件的选型与连接,以及信号调理、阈值比较和数码管显示等关键电路设计。附赠完整仿真文件和实用调试技巧,帮助电子工程初学者快速掌握体温温度检测系统的设计与实现。

weixin_28285943的博客 293

Codex 100个真实案例 - 全系列总结与Codex最佳实践全解析

历经100个案例的淬炼,我们终于来到了终点!本篇是整个系列的压轴之作——全面回顾100个案例的分类统计、提炼Codex使用的核心技巧和最佳实践、总结Prompt工程的精华要点、剖析常见错误及解决方案、展望AI编程的未来趋势,并为不同水平的读者规划学习路径。这不仅是一篇总结,更是一本Codex实战手册!

yueyeguzhuo的专栏 136

基本适配器(BaseAdapter)

数组适配器是一个纯文本的适配器,简单适配器是一个可以存储图片和文本的适配器。相对于前两个适配器,基本适配器BaseAdapter是ArrayAdapter和SimpleAdapter的父类,更具灵活性,而BaseAdapter 是一个抽象类,要想使用这个适配器,首先要先创建一个类去实现这个抽象类,通过创建子类对象来实现BaseAdapter中的方法。条目布局是相对于简单适配器和数组适配器更加完整,添加了商品信息和商品名字。其次,这个也是需要来创建条目布局。

m0_64881205的博客 922

【系统架构设计师-2023年真题】综合知识-答案及详解

要实现多任务间的协同工作,操作系统必须提供任务间的通信手段。嵌入式操作系统一般都会提供多任务间通信的方法,其中()是任务间最直接、最明显的通信方法,也是访问共享的数据结构,即不同的任务都可以访问同一地址空间。()作为一种更高级的通信方式,能够在同一处理器的各个任务间传递任意长度(理论上只受物理内存和机器字长限制)的信息。(1)A. 共享内存 B. Socket C. 消息传递 D. 信号量(2)A. 共享内存 B. Socket C. 消息传递 D. 信号量【答案】A、C关于星型拓扑结构,下列说法正确的是(

数据知道的博客 1万+

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

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

ttjjttjj1101的专栏 829

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 通过Location获取Address的使用!
下一篇: 自定义Android的Spinner
shareCode
博客等级 码龄15年 125粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值