- 浏览: 59524 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (218)
- ★★★ Android ★★★ (37)
- 【 Java 基础】✚ (0)
- ☞Java 基础概述 (0)
- ☞Java 基本语法 (0)
- ☞Java 面向对象编程 (0)
- ☞Java多线程 (0)
- ☞Java 异常处理 (0)
- ☞Java 集合框架 (0)
- ☞Java 泛型 (0)
- ☞Java 枚举和注解 (0)
- ☞Java IO流 (0)
- ☞Java 常用类 (0)
- ☞Java GUI键盘事件 (0)
- ☞Java 网络编程 (0)
- ☞Java 正则表达式 (0)
- ☞Java 反射机制 (0)
- ☞Java 小项目 (0)
- ☞Java 面试/笔试题 (0)
- 【HTML5 开发基础】✚ (0)
- ☞HTML常用标签 (0)
- ☞HTML 新特性 (0)
- ☞CSS/CSS3常用语法 (0)
- ☞JavaScript基础语法 (0)
- ☞HTML5 小项目 (0)
- ☞HTML5 面试/笔试题 (0)
- 【Android 基础阶段】✚ (12)
- ☞Android 快速入门 (1)
- ☞Android 核心组件 (1)
- ☞Android Intent (0)
- ☞Android 用户界面 (5)
- ☞Android 数据存储 (0)
- ☞Android Tomcat服务器 (0)
- ☞Android 网络编程 (2)
- ☞Android 消息机制 (0)
- ☞Android 事件机制 (0)
- ☞Fragment和ViewPager (3)
- ☞Android动画与图形处理 (0)
- ☞Android多媒体应用开发 (1)
- ☞Android 传感器开发等 (0)
- ☞Android GPS应用 (0)
- ☞Android C语言 (0)
- ☞Android JNI/NDK开发 (0)
- ☞Android Git/SVN (0)
- ☞Android 小项目 (0)
- ☞Android 面试/笔试题 (0)
- 【Android 微知识点】✚ (7)
- ☞Android 一些模版代码 (0)
- ☞Android 模块功能代码 (0)
- ☞Android UI控件大全 (2)
- ☞Android 自定义适配器 (1)
- ☞Android 自定义属性 (3)
- ☞Android 自定义动画 (0)
- ☞Android 启动过程 (0)
- ☞Android 性能优化 (0)
- ☞Android 图片三级缓存 (0)
- ☞Android 屏幕适配 (0)
- ☞Android OOM内存溢出 (0)
- ☞Android 权限 (0)
- ☞Android JNI (0)
- 【Android 网络编程】✚ (1)
- ☞Android Json解析 (2)
- ☞Android 网络请求 (2)
- 【Android 解析器】✚ (0)
- ☞Android XML (0)
- ☞Android DOM (0)
- ☞Android dom4j (0)
- ● (0)
- ●● (0)
- ●●● (0)
- ●●●● (0)
- ●●●●● (0)
- ●●●●●● (0)
- ●●●●●●● (0)
- ●●●●●●●● (0)
- ●●●●●●●●● (0)
- ☞☞☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞☞ (0)
- ☞☞☞☞☞☞ (0)
- ☞☞☞☞☞ (0)
- ☞☞☞☞ (0)
- ☞☞☞ (0)
- ☞☞ (0)
- ☞ (0)
- 【Android重量级框架】✚ (14)
- ☞框架归类 (1)
- ☞Gson (0)
- ☞xUtils3 (2)
- ☞xListView (0)
- ★ Volley (0)
- ★ AndroidAnnotations (0)
- ★ Glide (0)
- ★ SlidingMenu (0)
- ★ TabLayout (1)
- ★ ViewPagerIndicator (4)
- ★ Pulltorefresh (1)
- ★ PhotoView (1)
- ★ EventBus (0)
- ★ Vitamio5.0 (0)
- ★ Image-Loader (1)
- ★ Android-gif-drawable (0)
- ★ ActionBar (0)
- ★ ActionBarSherlock (0)
- ★ OkHttp (0)
- ★ Afinal (2)
- ★ Ffmpeg (0)
- ★ RxJava (0)
- ★ Picasso (0)
- ★ FastJson (0)
- ★ Toolbar (0)
- ★ GreenDao (0)
- ★ Otto (0)
- ★ ORMLite (0)
- ★ Retrofit (0)
- ★ Fresco (0)
- ★ SnappyDB (0)
- ★ Butterknife (0)
- ★ PagerSlidingTabStrip (0)
- PinterestLikeAdapterView (0)
- ★ NotBoringActionBar (0)
- ★ StickyListHeaders (0)
- ★ NineOldAndroids (0)
- ★ Expandablelistview (0)
- ★ SwipeRefreshLayout (0)
- ★ SwipeMenuListView (0)
- ★ (0)
- ★★ (0)
- ★★★ (0)
- ★★★★ (0)
- ★★★★★ (0)
- ★★★★★★ (0)
- ★★★★★★★ (0)
- ★★★★★★★★ (0)
- ★★★★★★★★★ (0)
- ★★★★★★★★★★ (0)
- ❉❉❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉❉ (0)
- ❉❉❉❉❉❉ (0)
- ❉❉❉❉❉ (0)
- ❉❉❉❉ (0)
- ❉❉❉ (0)
- ❉❉ (0)
- ❉ (0)
- 【第三方分享库】✚ (0)
- ○○○○○○○○○○ (0)
- ○○○○○○○○○ (0)
- ○○○○○○○○ (0)
- ○○○○○○○ (0)
- ○○○○○○ (0)
- ○○○○○ (0)
- ○○○○ (0)
- ○○○ (0)
- ○○ (0)
- ○ (1)
- 【Android开源项目】✚ (1)
- ☞综合性项目 (0)
- ☞多媒体项目 (1)
- ☞新闻性项目 (2)
- ☞社交性项目 (0)
- ☞商城性项目 (0)
- ☞Android 支付宝 (0)
- ☞Android 第三方登录 (0)
- ☞Android 语音识别 (0)
- ☞Android消息推送 (1)
- ☞Android 蓝牙 (0)
- ☞Android 传感器 (0)
- ☞Android 动画 (0)
- ☞Android 省市县三级联动 (0)
- ☞短信验证技术 (0)
- ☞二维码扫描技术 (0)
- ☂ (0)
- ☂☂ (0)
- ☂☂☂ (0)
- ☂☂☂☂ (0)
- ☂☂☂☂☂ (0)
- ☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂☂ (0)
- ☂☂☂☂☂☂☂☂☂☂ (0)
- ♣♣♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣♣ (0)
- ♣♣♣♣♣♣ (0)
- ♣♣♣♣♣ (0)
- ♣♣♣♣ (0)
- ♣♣♣ (0)
- ♣♣ (0)
- ♣ (0)
- 【Android源码分析】✚ (4)
- 【Android项目阶段】✚ (1)
- ☞Android主流架构搭建 (0)
- ☞综合性<手机安全卫士> (0)
- ☞多媒体<手机影音> (1)
- ☞新闻性<北京新闻> (0)
- ☞社交性<硅谷社交> (0)
- ☞商城性<硅谷商城> (0)
- ☞内涵段子<百思> (0)
- ☞<地图相关开发接口> (0)
- ☞下载<电子应用市场> (0)
- ☞智能<手机遥控家电> (0)
- ☞游戏<植物大战僵尸> (0)
- ☞企业实战<开源中国> (0)
- ☞Android5.0+6.0新特性 (0)
- ☞高级特效专辑 (0)
- ☞项目管理与实施 (0)
- ☞项目经验:面试/笔试题 (0)
- 【Android 前沿技术】✚ (0)
- ☞图文混排技术 (0)
- ☞百分比布局 (0)
- H5混合开发☞ (0)
- ☞APP增量升级 (0)
- ☞软件崩溃收集 (0)
- ☞前沿技术分享 (0)
- 【Android+H5混合开发】✚ (0)
- ☞React基本语法 (0)
- ☞React Native开发环境搭建 (0)
- ☞React Native开发基础 (0)
- ☞React Native常用组件 (0)
- ☞React Native常用API (0)
- ☞豆瓣搜索项目 (0)
- ☏ (0)
- ☏☏ (0)
- ☏☏☏ (0)
- ☏☏☏☏ (0)
- ☏☏☏☏☏ (0)
- ☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏☏ (0)
- ☏☏☏☏☏☏☏☏☏☏ (0)
- ☎☎☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎☎ (0)
- ☎☎☎☎☎☎ (0)
- ☎☎☎☎☎ (0)
- ☎☎☎ (0)
- ☎☎ (0)
- ☎ (0)
- 【Android+H5项目实战】✚ (0)
- 【程序员软件系列】✚ (4)
- ☞Eclipse (0)
- ☞Android Studio (4)
- ☞Genymotion (0)
- ☞Tomcat服务器 (0)
- ☞MyScal (0)
- ☀ (0)
- ☀☀ (0)
- ☀☀☀ (0)
- ☀☀☀☀ (0)
- ☀☀☀☀☀ (0)
- ☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀☀ (0)
- ☀☀☀☀☀☀☀☀☀☀ (0)
- ☻☻☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻☻ (0)
- ☻☻☻☻☻☻ (0)
- ☻☻☻☻☻ (0)
- ☻☻☻☻ (0)
- ☻☻☻ (0)
- ☻☻ (0)
- ☻ (0)
- ♬♬♬ 技术网站 ♬♬♬ (2)
- ◙ (0)
- ◙◙ (0)
- ◙◙◙ (0)
- ◙◙◙◙ (0)
- ◙◙◙◙◙ (0)
- ◘◘◘◘◘ (0)
- ◘◘◘◘ (0)
- ◘◘◘ (0)
- ◘◘ (0)
- ◘ (0)
- 【Android 其他技术】✚ (0)
- ☞Android反编译 (0)
- ☞抓包 (0)
- ☞多渠道打包及软件上线 (0)
- 【github项目/博客系列】✚ (1)
- ☞注册github步骤 (0)
- ☞github项目 (0)
- ☞优秀博客系列 (1)
- 【开发经验分享】✚ (2)
- ☞Android 知识体系 (1)
- ☞项目经验分享 (0)
- ☞面试与就业指导 (1)
- ☞Android面试技术汇总 (2)
- ♬♬♬ 词汇 ♬♬♬ (0)
- 【Android基础单词】✚ (0)
- 【javaSE单词】✚ (0)
- 【个人博客资料】✚ (0)
- 博客链接 (1)
- 快速开发 (1)
- JavaEE面试题 (1)
最新评论
Android中的Adapter 详解(二)
不论是那种适配器模式,也不管是Listview也好还是gridview也好,对他们填充数据,都是分三步走。
第一:创建一个数据填充的对象,可以是ListView, GridView, Gallery。
listView=(ListView) findViewById(R.id.listview_simple);
第二步:创建一个数据填充器,可以是BaseAdapter、SimpleAdapter,也可以是与数据库相关联的CursorAdapter。
例如:SimpleAdapter可以使用系统封装好的,你也可以自己去继承一个Simpleadapter,来重写其中的方法。继承 simpleadapter的好处在于,你可以对listitem中每个单一的控件设置监听事件等等一系列操作。如果用的是系统封装好的就有点爱莫能助了。
直接使用系统封装的:
SimpleAdapter simpleAdapter = new SimpleAdapter( this, data, R.layout.simple_item, new String[] { "name", "info" }, new int[] { R.id.simple_name, R.id.simple_info });
重写系统的simpleadpter:
public class ListSimpleAdpter extends SimpleAdapter{ //要使用到的数据源 private List<MAP><STRING, object="">> data=new ArrayList</STRING,></MAP><MAP><STRING, object="">>(); //填充数据的资源文件 private int resource; private String[] from; private Context context; public ListSimpleAdpter(Context context, List</STRING,></MAP><MAP><STRING, object="">> data, int resource, String[] from, int[] to) { super(context, data, resource, from, to); this.context=context; this.data=data; this.resource=resource; this.from=from; } //item的总行数 @Override public int getCount() { // TODO Auto-generated method stub return data==null?0:data.size(); } //item对象 @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } //item的id @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } //绘制每一个item @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub Holder holder = null; if(convertView==null) { convertView=LayoutInflater.from(context).inflate(resource, null); holder=new Holder(); holder.imageView=(ImageView) convertView.findViewById(R.id.listitem_pic); holder.title=(TextView) convertView.findViewById(R.id.listitem_title); holder.content=(TextView) convertView.findViewById(R.id.listitem_content); convertView.setTag(holder); }else{ holder=(Holder) convertView.getTag(); } holder.imageView.setImageResource(Integer.parseInt(data.get(position).get(from[0]).toString())); holder.title.setText(data.get(position).get(from[1]).toString()); holder.content.setText(data.get(position).get(from[2]).toString()); return convertView; } class Holder{ ImageView imageView; TextView title; TextView content; } }
这里对于Adapter的优化,用的很古老的ViewHolder、ViewCache办法:
public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub Holder holder = null; if(convertView==null) { convertView=LayoutInflater.from(context).inflate(resource, null); holder=new Holder(); holder.imageView=(ImageView) convertView.findViewById(R.id.listitem_pic); holder.title=(TextView) convertView.findViewById(R.id.listitem_title); holder.content=(TextView) convertView.findViewById(R.id.listitem_content); convertView.setTag(holder); }else{ holder=(Holder) convertView.getTag(); } holder.imageView.setImageResource(Integer.parseInt(data.get(position).get(from[0]).toString())); holder.title.setText(data.get(position).get(from[1]).toString()); holder.content.setText(data.get(position).get(from[2]).toString()); return convertView; } class Holder{ ImageView imageView; TextView title; TextView content; }
或者使用HashMap做缓存的方法:
HashMap<INTEGER, view=""> m = new HashMap<I<span id="transmark"></span>NTEGER, view="">(); public View getView(int position, View view, ViewGroup parent) { View convertView = m.get(position); if (convertView != null) { return convertView; } else { convertView=LayoutInflater.from(context).inflate(resource, null); ImageView imageView=(ImageView) convertView.findViewById(R.id.listitem_pic); TextView title=(TextView) convertView.findViewById(R.id.listitem_title); TextView content=(TextView) convertView.findViewById(R.id.listitem_content); m.put(position, convertView); } }
第三步:将数据填充到对象中去
listView.setAdapter(simpleAdapter);
这样就完成了数据填充器的数据填充。
还有ArrayAdapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter,ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter.SimpleCursorTreeAdapter、
二级树相关的SimpleExpandableListAdapter、BaseExpandableListAdapter等等。
相关推荐
### Android开发Adapter详解 #### 一、Adapter概念与作用 在Android开发中,Adapter是一种用于连接数据源和视图组件的重要桥梁。它主要用于处理数据集合与列表视图之间的交互,确保视图能够正确且高效地展示数据。...
Android Adapter 详解 Android Adapter 是 Android 开发中一个重要的组件,负责将数据绑定到用户界面中。今天,我们将深入探讨 Android Adapter 的原理和实现方式。 什么是 Android Adapter? Android Adapter 是...
这篇博客“Android Adapter详解(2)”可能会深入探讨Adapter的工作原理、如何使用以及一些常见问题的解决方法。由于没有直接提供博客的具体内容,我将根据常规的Adapter知识进行详细解释。 Adapter是Android中用于将...
适配器(Adapter)在Android开发中是一个非常重要的概念,它主要用于处理数据源和UI组件之间的数据流动和转换。适配器作为数据和UI之间的桥梁,能够把后端数据适配到前端的显示界面,使之能够按照一定的格式显示出来...
#### 二、Android 中 Adapter 的类型及其特点 Android 提供了多种类型的 Adapter,每种都有其特定的应用场景和特点: 1. **BaseAdapter** - **简介**: 这是一个抽象类,提供了基本的 Adapter 方法,开发者需要...
在Android中,Adapter是连接数据源和视图控件(如ListView)的关键。 常见的Adapter类型有ArrayAdapter、SimpleAdapter、SimpleCursorAdapter以及BaseAdapter等。ArrayAdapter适用于绑定数组数据,SimpleAdapter...
Android Adapter里面嵌套ListView实例详解是Android开发中的一种常见设计,即在一个ListView中嵌套另一个ListView。这种设计可以实现复杂的列表显示,但是需要特殊处理以确保正确显示。 Android Adapter里面嵌套...
在Android应用开发中,构建用户界面是至关重要的一步,它涉及到与用户交互的各种控件。以下是对Android中常见控件的详细解释: 1. **文本框(TextView)**:TextView用于展示静态文本,可以在Activity中直接创建...
Android 优化技术详解 Android 优化技术是指通过合理的编程和设计来提高 Android 应用程序的性能、内存和用户体验的一系列技术。下面是 Android 优化技术的详细解释: UI 布局优化 Android 的 UI 界面布局的优化...
**Android ViewPager 使用详解** ViewPager是Android开发中一个非常重要的组件,它允许用户通过左右滑动来切换不同的页面,常用于实现应用的滑动导航或展示多个相似内容的页面。在本篇文章中,我们将深入探讨...
#### 二、Android Adapter 的家族成员 Android 提供了多种类型的 Adapter 来满足不同的应用场景: - **BaseAdapter**:这是一个抽象类,提供了一套基础的 Adapter 方法,如 getCount()、getItem() 和 getItemId()...
在Android开发中,ListView是一个非常重要的组件,常用于展示大量数据的列表形式。它可以根据数据的长度自动调整显示,提供良好的用户体验。以下是对ListView组件及其使用的详细解释。 首先,ListView的构成包含三...
在本资源中,我们聚焦于Android开发的核心技术和实例解析,主要涵盖了光盘源代码的第13至第18章。这些章节深入探讨了Android应用开发的关键方面,为开发者提供了丰富的学习材料。以下是对各章节内容的详细解读: 第...
**Android蓝牙API详解** 在Android平台上,蓝牙技术是设备间通信的重要途径,广泛应用于数据传输、设备配对、物联网(IoT)等场景。Android提供了丰富的蓝牙API,使得开发者能够轻松实现蓝牙功能,包括经典蓝牙...
1. **UI设计**:Android应用的用户界面是与用户交互的窗口,源代码中包含了各种布局管理器(如LinearLayout、RelativeLayout、GridLayout、ConstraintLayout)的使用示例,以及自定义View和Adapter的实现,这些都是...
在本资源中,"Android 应用开发详解的源码(中)" 提供了针对初学者的Android应用开发实例,涵盖了从第七到第十二部分的知识点。这些源码旨在帮助学习者深入理解Android应用程序的设计与实现。以下是这些知识点的详细...
Android布局详解【图文】 在Android应用开发中,布局(Layout)是构建用户界面的基础,它决定了各个组件在屏幕上的排列方式和位置。本篇将详细讲解Android中的五种主要布局:线性布局(Linear Layout)、相对布局...
在翟大昆版的《Android项目开发详解》代码中,读者可以找到实际项目案例,了解如何将理论知识应用于实践中。通过分析和运行这些代码,开发者不仅可以掌握基本的界面设计和Activity管理,还能了解如何组织项目结构,...