Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!

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

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


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

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

[java] view plaincopy
  1. private class MyAdapter extends BaseAdapter{       @Override      public int getCount() {           // TODO Auto-generated method stub           return 0;       }       @Override      public Object getItem(int arg0) {           // TODO Auto-generated method stub           return null;       }       @Override      public long getItemId(int position) {           // TODO Auto-generated method stub           return 0;       }       @Override      public View getView(int position, View convertView, ViewGroup parent) {           // TODO Auto-generated method stub           return null;       }             }    

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

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

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

[xhtml] view plaincopy
  1. <?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"      >       <TextView             android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:text="Welcome to Mr Wei's Blog"      />       <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代码如下:

[java] view plaincopy
  1. 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;       @Override      public 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{           @Override          public int getCount() {               // 这里我就返回10了,也就是一共有10项数据项               return 10;           }           @Override          public Object getItem(int arg0) {               return arg0;           }           @Override          public long getItemId(int position) {               return position;           }           @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;           }                  }   }    

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

效果图一:


效果图二:


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

[xhtml] view plaincopy
  1. <?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"      >       <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()方法修改如下:

[java] view plaincopy
  1. @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;           }    

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


Ok,搞定了,呵呵~!

论文阅读笔记:Extended Vision Transformer (ExViT) for Land Use and Land Cover Classification 注意力机制驱动的深度模型最近取得了成功,如最具代表性的视觉转换器(ViT),吸引了一波高级研究来探索它们对更广泛领域的适应。然而,遥感(RS)领域中基于Transformer的方法更关注单模态数据,这可能会在充分利用不断增长的多模态地球观测数据时失去可扩展性。为此,我们提出了一种新的多模式深度学习框架,通过在最小修改的情况下扩展传统的ViT,针对土地利用和土地覆盖(LULC)分类任务。 阅读详情

相关推荐

嵌入式定点PID控制器:mrm-pid极简实现与实时控制实践

PID控制器是自动控制领域的基础算法,其核心在于比例、积分、微分三环节的协同调节。在资源受限的嵌入式系统中,传统浮点PID易受时序抖动、内存分配不确定性及FPU依赖影响,难以满足毫秒级确定性响应需求。定点PID通过整数运算替代浮点计算,显著提升执行周期稳定性与跨平台兼容性,成为电机控制、传感器补偿等实时场景的关键技术路径。mrm-pid库以位置式结构、int32_t增益参数、int64_t积分累加器和无动态内存设计,实现了超低开销(12–28 CPU周期)与完全可审计的闭环内核,天然适配Cortex-M系列

weixin_31659095的博客 572

BaseAdapter详解

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

qq_40304794的博客 9315

学习笔记|多样本单因素方差分析|事后比较|方差齐性|F检验|韦尔奇检验|两独立样本T检验|两样本方差分析|规范表达|《小白爱上SPSS》课程:SPSS第七讲 | 单因素方差分析怎么做?

学习笔记|多样本单因素方差分析|事后比较|方差齐性|F检验|韦尔奇检验|两独立样本T检验|两样本方差分析|规范表达|《小白爱上SPSS》课程:SPSS第七讲 | 单因素方差分析怎么做?

Medlar_CN的博客 9516

BaseAdapter的简单使用

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

weixin_46067095的博客 5830

MaaS 商业模式全面分析报告:从技术赋能到商业变现的全链条探索

MaaS(模型即服务)商业模式正成为AI产业主流,2024年上半年中国市场规模达2.5亿元,预计2027年占比将提升至47%。该模式通过云服务提供预训练AI模型,大幅降低企业应用AI的技术门槛和成本。核心盈利方式包括按使用量计费、订阅制、定制化服务等,其中混合模式因灵活性成为趋势。MaaS产业链包含模型提供商、云平台、应用开发商和最终用户,重塑了AI产业格局。随着《数据法案》等监管加强,数据增值服务面临更严格合规要求。未来五年,中国MaaS市场增速预计超50%,用户规模将从2025年2.1亿增至2030年5

芯片行业20年 · 参与定义实现千万级量产出货 · AI芯片PM 2892

STM32平台下FreeModbus TCP协议栈集成指南

深入讲解在STM32平台如何移植和配置freemodbus协议栈,实现TCP通信功能。结合嵌入式开发细节,帮助开发者快速掌握freemodbus的应用与调试技巧。

weixin_36001279的博客 1144

Android适配器之BaseAdapter

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

wangzhezhilu001的专栏 2209

把时间当成数据:SAP ABAP 里的 DATS/TIMS 与 DATN/TIMN,怎么选才不踩坑

SAP项目中日期时间字段的陷阱与优化 日期时间字段(DATS/TIMS)在SAP项目中看似简单却常引发事故,主要问题包括: 非法日期(如20201331)入库后,在月结、对账时爆发异常 空值被处理为00000000导致排序错误 ABAP提供两种处理方案: 经典类型DATS/TIMS:存储为字符格式,校验宽松易存脏数据 HANA原生类型DATN/TIMN:数据库级校验,写入即拦截非法值 优化建议: 在接口层和入库前进行严格校验 新项目优先使用DATN/TIMN类型 对遗留数据使用DATS_IS_VALID等函

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 184

【android】ListView之BaseAdapter使用详解

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

此成非彼诚博客 1万+

17、Nimble 包开发与并行编程指南

本文介绍了Nimble包的开发与版本管理流程,涵盖语义化版本控制规范及发布步骤;深入探讨了Nim中的并行编程基础,包括并发与并行的区别、threads模块与threadpool模块的使用方法及其差异;分析了线程执行的不确定性、线程池的优势,并提供了线程同步和资源管理的实践示例,帮助开发者高效构建稳定、高性能的Nim应用程序。

wine的专栏 56

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

自动批量安装加载cran, bioconductor和github三个平台的所有的R包

qq_40073899的博客 561

基本适配器(BaseAdapter)

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

m0_64881205的博客 922

基于simulink的BMS系统中电池单体故障隔离与恢复建模

本文介绍了使用Simulink构建BMS电池单体故障诊断与容错控制模型的方法。主要内容包括:1)搭建12串锂电池组模型;2)实现单体故障注入(过压、断线等);3)设计故障诊断与隔离模块(采用Stateflow状态机);4)开发恢复判断逻辑(需满足电压、温度等条件);5)系统监控与仿真设置。文章还提供了工程实践建议,如防环流设计、通信冗余等,并指出进阶方向(多故障处理、AI预警等)。该模型适用于新能源汽车、储能系统的BMS设计,可提高系统可靠性和安全性。

xiaoheshang_123的博客 140

Android高手进阶教程(十六)之---Android中万能的BaseAdapter(Spinner,ListView,GridView)的使用!...

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

weixin_30443747的博客 124

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: Android高手进阶教程(十五)之---通过Location获取Address的使用!
下一篇: Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
ccwRadar
博客等级 码龄16年 154粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值