继承BaseAdapter实现自定义Adapter

继承 BaseAdapter 自定义 Adapter 来实现 ListView 其实 SimpleAdapter 适配器已经能够满足很多情况了,但是由于它的一些缺陷,实际上在开发中使用最多、最广泛的还是通过继承 BaseAdapter 自定义 Adapter 的方式来实现ListView SimpleAdapter和ArrayAdapter也是继承自 BaseAdapter 的,只是两种已经实现好的 BaseAdapter而已。 和 SimpleAdapter 与 ArrayAdapter 一样,自定义 Adapter 需要至少实现 BaseAdapter 的 getCount()、 阅读详情

android开发中会经常用来自定义的Adapter,如下就是一个简单的自定义Adapter实例。

 

import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

/**
 * 自定义适配器通过ListView显示内容,这个比较重要需要掌握
 * @author Dylan
 */
public class CustomAdapterActivity extends Activity {

	private ListView mListView;

	private CustomAdapter mAdapter;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		mListView = (ListView) findViewById(R.id.listview);
		mAdapter = new CustomAdapter();
		mListView.setAdapter(mAdapter);
		mListView.setOnItemClickListener(new ItemClickListener());
	}

	private final class ItemClickListener implements OnItemClickListener {

		// AdapterView<?> parent, --> ListView View view, ---> item int
		// position,--> item的数据在Adapter中位置 long id---> item在listView中得位置
		@Override
		public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
			String name = (String) mAdapter.getItem(position);
			Toast.makeText(getApplicationContext(), "name =" + name + ",position " + position, Toast.LENGTH_SHORT)
					.show();
		}
	}

	private final class CustomAdapter extends BaseAdapter {

		private String[] names = new String[] { "无线和网络", "通话设置", "声音", "显示", "位置和安全", "应用程序", "账户与同步", "隐私权",
				"SD卡和手机内存", "语言和键盘", "辅助功能", "日期和时间", "关于手机" };

		private int[] images = new int[] { R.drawable.image01, R.drawable.image02, R.drawable.image03,
				R.drawable.image04, R.drawable.image05, R.drawable.image06, R.drawable.image07, R.drawable.image08,
				R.drawable.image09, R.drawable.image10, R.drawable.image11, R.drawable.image12, R.drawable.image13 };

		private LayoutInflater mInflater;

		public CustomAdapter() {
			mInflater = getLayoutInflater();
		}

		// 描述adpter的大小(确定了listView的条目)
		@Override
		public int getCount() {
			return names.length;
		}

		// Adapter对于的position的数据
		@Override
		public Object getItem(int position) {
			return names[position];
		}

		// 得到item 在adapter所对应的位置
		@Override
		public long getItemId(int position) {
			return position;
		}

		// 创建listview的item条目,把数据绑定给item int position, Adapter的下标 View
		// convertView, 缓存的第一屏item的布局文件 ViewGroup parent ListView
		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			View view = null;
			if (convertView != null) {
				view = convertView;
			} else {
				view = mInflater.inflate(R.layout.item, parent, false);
			}

			ImageView iv_header = (ImageView) view.findViewById(R.id.iv_header);
			TextView tv_name = (TextView) view.findViewById(R.id.tv_name);

			iv_header.setImageResource(images[position]);
			tv_name.setText(names[position]);

			return view;
		}
		/*
		 * @Override
				public View getView(int position, View convertView, ViewGroup parent) {
					ViewCache viewCache = null;
					if (convertView == null) {
						viewCache = new ViewCache();
						convertView = inflater.inflate(R.layout.folder_list_item, null);
						viewCache.tvName = (TextView) convertView.findViewById(R.id.tv_folder_name);
						viewCache.ivPreview = (ImageView) convertView.findViewById(R.id.iv_folder_preview);
						convertView.setTag(viewCache);
					} else {
						viewCache = (ViewCache) convertView.getTag();
					}
					
					FileInfo fileInfo = arrayList.get(position);
					viewCache.tvName.setText(new File(fileInfo.filePath).getName());
					return convertView;
				}
			public static class ViewCache {
					public ImageView ivPreview;
					public TextView tvName;
	   		}
		 */
	}
}
告别测序污染:手把手教你用Decontam+SCRUB+FEAST完成微生物组数据清洗全流程 本文详细解析了使用Decontam、SCRUB和FEAST三大工具完成微生物组数据清洗的全流程。从环境准备、数据导入到污染物识别、样本间污染校正及溯源分析,提供了一套可复用的污染校正工作流,帮助研究者提升数据质量,确保后续分析的可靠性。 阅读详情

相关推荐

【chips】个人笔记系列-SystemVerilog

个人整理的Systemverilog笔记。

Hide_in_Code 2057

BaseAdapter

BaseAdapter是最基础的Adapter类,也是最实用最常用的一个类,但是相比于ArrayAdapter之类的,对初学者来说却比较难理解。所以在这里介绍一下BaseAdapter。 Adapter是什么 An Adapter object acts as a bridge between an AdapterView and the underlying data for t...

weixin_34306446的博客 889

Cesium WebGL性能调优实战:从卡顿根源到流畅渲染

本文深入探讨Cesium WebGL性能调优的实战技巧,从硬件配置、框架适配到3D Tiles加载策略,全面解决卡顿问题。通过强制启用独立显卡、优化浏览器设置、避免Vue内存陷阱等实用方法,显著提升3D地图应用的流畅度。文章还分享了高级调试工具和实战避坑经验,帮助开发者实现高效渲染。

weixin_27215337的博客 419

android开发之继承BaseAdapter实现通用数据适配器

原文出处:http://blog.youkuaiyun.com/javasuki/article/details/11869615

lazy的专栏 1125

数字后端零基础入门系列 | Innovus零基础LAB学习Day7

数字后端零基础入门系列 | Innovus零基础LAB学习Day7

weixin_37584728的博客 2271

matinal:S4 HANA 详解ACDOCA与BSEG的区别都在这了

当你在Coding Block中添加自定义字段的时候

matinal 當冬夜漸暖 。公众号:matinal 4576

Android 简单案例:继承BaseAdapter实现Adapter

import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; ...

weixin_34072857的博客 234

STM32F429网络通信避坑指南:用CubeMX搞定LAN8720+LWIP+FreeRTOS(附完整代码)

本文详细介绍了STM32F429通过CubeMX配置LAN8720+LWIP+FreeRTOS实现网络通信的避坑指南,涵盖硬件连接、CubeMX配置、LWIP优化及调试技巧,提供完整代码和实战经验,帮助开发者高效解决以太网通信中的常见问题。

weixin_26873711的博客 145

自定义Adapter:BaseAdapter

自定义的Adapter: package com.xie.app; import java.util.List; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import an

u011004457的专栏 1198

【25届数字IC秋招总结】面试经验10——紫光同芯

25届数字ic面试记录——紫光同芯

lalala0635的博客 862

Python 爬虫实战:爬取豆瓣电影 Top250 完整数据

本文基于Python技术实现了豆瓣电影Top250榜单数据的合规爬取与分析。针对豆瓣电影页面的分页结构、反爬机制等特点,采用requests库获取数据,结合BeautifulSoup解析HTML节点,并通过正则表达式提取电影名称、评分、导演等核心字段。爬虫实现了随机User-Agent、请求间隔控制等反爬规避策略,严格遵守豆瓣社区使用规范。最终数据经清洗后存储为结构化Excel文件,并提供了数据可视化与增量更新方案。该方案为影视研究提供了可靠的数据获取方法,同时确保符合非商业使用、适度爬取等合规要求。

2503_91057718的博客 3460

继承BaseAdapter实现Filterable的adapter类完整示例

转载:http://www.lai18.com/content/1631130.html 目标:自定义ListView项布局通常需要自己实现Adapter,并通过搜索关键字筛选部分数据。且关键字变长变短,甚至为空时都应该正确搜索。关键字:ListView Adapter ViewHolder Filter最终实现如下效果:借鉴了几篇资料后终于弄好了一个带过滤器的数据adapter。网上要一次性弄...

u010217394的博客 152

基于STM32L4XX 、HAL库的TMC2209-LA-T步进电机驱动器驱动程序应用设计

/ R/W=0 表示写。uint32_t gconf_value = (0 << 0) // I_scale_analog: 禁用,使用UART控制电流。uint32_t ihold_irun = (8 << 0) // 保持电流 8/31 最大值。

PP_Cottage的博客 449

android的adapter控件在哪,Android常用控件之GridView使用BaseAdapter

我们可以为GridView添加自定义的Adapter,首先看下用自定义Adapter的显示效果在布局文件main.xml文件中定义一个GridView控件xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:...

weixin_30199835的博客 461

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

android AutoCompleteTextView 自定义BaseAdapter

最近项目中需要做搜索功能,实现类似 Google、Baidu 搜索的 下拉提示效果。Android为我们提供了AutoCompleteTextView 控件来完成此功能。 网上好多例子都是简单使用 ArrayAdapter 来实现的,界面比较简单,实际项目中用处不大;自己研究了一番,自定义Adapter 继承BaseAdapter 并实现Filterable 接口实现了上述功能。 ...

132

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

spinner使用自定义的Adapter

运行效果                                定义每一个Item的布局文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_w

柠檬不萌 3747

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android自定义adapter

课堂笔记: 自定义adapter需要继承BaseAdapter类(抽象类) 一般当系统提供的适配器无法满足需求是才会使用自定义的适配器 重写四个方法: getCount用于反回数据源的长度 getItem 返回数据源 getItemId    id getView  返回viwe   列子 package com.example.luo2; import android.co

sin0806的博客 420

Android通过自定义Adapter显示ListView

1. 自定义Adapter继承BaseAdapter,并且实现其中的4个抽象方法 [code="java"] protected class MyFolderListAdapter extends BaseAdapter { private LayoutInflater inflater; private List list; public MyFolderListA...

Hypercube 159

自定义Adapter

在ListView,GridView。。。。中经常用到适配器Adapter,但是anroid 提供的Adapter只是几种框架,如果我们有需求,还是要自己根据需求而自定义Adapter的 android提供的三种Adapter主要有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter和BaseAdapter。ArraAdapter是简单的字符串适配器(

CVSDN的博客 408

Android入门 ListView 继承BaseAdapter实现

Android入门 ListView 继承BaseAdapter实现

qq_44884619的博客 285

自定义autoCompleteTextView实现自己的匹配规则

自定义autoCompleteTextView实现自己的匹配规则 前言 用过autoCompleteTextView(后面简称auto)的同学都知道,它默认是从字符串的头部开始匹配的。或者中间有空格的也能从空格开始匹配后面的字符串。乍一看还以为是auto的匹配规则问题,其实是Adapter的问题(本来使用的是ArrayAdapter),要怎么样自定义匹配规则呢?! 1.自定义adapter继承自baseAdapter 2.实现Filterable接口,发现里面有一个必须实现的方法getFilter(

每天不是在写bug就是在写bug的路上 469

Adapter的继承结构

转载自:http://www.cnblogs.com/angeldevil/archive/2011/11/20/2255972.html Adapter的继承结构 Adapter的作用 Adapter是AdapterView视图与数据之间的桥梁,Adapter提供对数据的访问,也负责为每一项数据产生一个对应的View。其作用如下图所示:

u012803067的博客 1007

Android Studio中ListView通过自定义Adapter显示数据3-2

3 自定义FootballClub_Adapter类 接下来在项目中自定义一个名为FootballClub_Adapter类,将该类的父类设置为BaseAdapter,如图6所示。 图6 自定义FootballClub_Adapter类 3.1 BaseAdapter类 BaseAdapter类是Adapter类的一个抽象子类。在定义BaseAdapter类的子类时,必须要重写该类的getCount()、getItem()、getItemId()和getView()这四个成员方法。 3.1.1

hou09tian的博客 1259

Android自定义Adapter

Android提供了 ArrayAdapter和 SimpleAdapter,但都有一定局限性。当某些列表项需要一些特性,或者对列表项中的某些控件需要设置监听器时,就不够用了。这时需要用到自定义Adapter 直接上代码import android.view.LayoutInflater; import android.view.View; import android.view.V

技术栈 1137

ListView中Adapter的自定义

虽然android类库给我们提供了很多与ListView适配的Adapter并且使用起来非常方便,但是想要开发出美观的程序,自带的是不够的所以我们要重写Adapter。1.继承BaseAdapter类2.重写getView()--每一项显示成什么样有它决定3.重写getCount()--一共有多少项由它决定4.实现OnItemClickListener事件--为每一项添加事件实现onItemCli...

zhanhao2027的博客 126
上一篇: Android利用ContentResolver查询的三种方式
下一篇: Android的Widget编写实例
月氏女神
博客等级 码龄14年 5粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值