定义自己的Adapter 显示想要的组件

安卓入门二十二 自定义Adapter一Adapter用法 ArrayAdapter(Context context, int textViewResourceId, List objects)来装配数据,要装配这些数据就需要一个连接ListView视图对象和数组数据的适配器来两者的适配工作,ArrayAdapter的构造需要三个参数,依次为this,布局文件(注意这里的布局文件描述的是列表的每一行的布局,android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字,数据源(一个List集合)。 阅读详情

在Android 做自己毕业设计时,用到一个ListView,要在它里面显示一个TextView,一个RatingBar。但是不管是现有的Adapter没法直接调用给实现,ArrayAdapter<T>, CursorAdapter, SimpleAdapter都继承BaseAdapter。所以重写BaseAdapter来实现上述效果。

效果图



package drknow.activity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import drknow.vo.Hospital;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.RatingBar;
import android.widget.SimpleAdapter;
import android.widget.TextView;

/**
 * 主要用于显示医院简略信息:医院名,患者对医院服务水平的评价星级;
 */
public class SearchHospitalBriefResultsActivity extends ListActivity {
	ListView lv_hospitalBriefInfoList; // 医院简略信息列表;
	// Button btn_queryHospitalDetialInfo;// 点击按钮查看医院详细信息;
	TextView txt_search_hospital_by_name_results_show_hosp_name; // 显示医院简略信息;
	// RatingBar rat_hospitalEvaluate;// 医院评价星级;
	TextView txt_search_hospital_by_name_results_rating;// 医院评价星级;
	ImageView imgBtn_showMap;
	RatingBar rating;

	ArrayList<HashMap<String, Object>> hospitalBriefInfoList = new ArrayList<HashMap<String, Object>>();
	ArrayList<Hospital> hospitalList;

	/** Called when the activity is first created. */
	@SuppressWarnings("unchecked")
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// setContentView(R.layout.search_hospital_result_listview);
		setTitle("医院简略信息");
		findViews();

		// 获得传来的Hospital List;
		Intent intent = getIntent();
		hospitalList = (ArrayList<Hospital>) intent
				.getSerializableExtra("hospitallist");
		/*
		 * 这一大坨代码是之前想用SimpleAdapter未果。。。 HashMap<String, Object> hMap = null;
		 * 
		 * for (int i = 0; i < hospitalList.size(); i++) { hMap = new
		 * HashMap<String, Object>();
		 * hMap.put("txt_search_hospital_by_name_results_show_hosp_name",
		 * hospitalList.get(i).getHospitalName());
		 * hMap.put("txt_search_hospital_by_name_results_rating", (int)
		 * hospitalList.get(i).getRating() + "星级");
		 * 
		 * hospitalBriefInfoList.add(hMap); }
		 * 
		 * System.out.println(hospitalList.get(0).getRating()); String[] names =
		 * { "txt_search_hospital_by_name_results_show_hosp_name",
		 * "txt_search_hospital_by_name_results_rating" }; int[] ids = {
		 * R.id.txt_search_hospital_by_name_results_show_hosp_name,
		 * R.id.txt_search_hospital_by_name_results_rating };
		 * 
		 * SimpleAdapter sa = new SimpleAdapter(
		 * SearchHospitalBriefResultsActivity.this, hospitalBriefInfoList,
		 * R.layout.search_hospital_result_listview_item, names, ids);
		 */

		MyAdapter sa = new MyAdapter(this, hospitalList);

		setListAdapter(sa);

	}

	/**
	 * 点击某条信息触发事件;将该条对应的医院实例发送到HospitalDetailInfoActivity。
	 */
	@Override
	protected void onListItemClick(ListView l, View v, int position, long id) {
		super.onListItemClick(l, v, position, id);
		Intent intent = new Intent();
		intent.setClass(SearchHospitalBriefResultsActivity.this,
				HospitalDetailInfoActivity.class);
		intent.putExtra("hospitalinfo", hospitalList.get(position));
		startActivity(intent);
	}

	/** 该类所涉及view都在本方法中得到 */
	private void findViews() {
		// 获得ListView;
		// lv_hospitalBriefInfoList = (ListView)
		// findViewById(R.id.lv_search_hospital_by_name_listview);
		// imgBtn_showMap = (ImageView)
		// findViewById(R.id.imgbtn_earch_hospital_by_name_results_show_map);
		// imgBtn_showMap.setImageResource(R.drawable.map_pin);
		// imgBtn_showMap.setVisibility(BIND_AUTO_CREATE);

		txt_search_hospital_by_name_results_rating = (TextView) findViewById(R.id.txt_search_hospital_by_name_results_rating);
		txt_search_hospital_by_name_results_show_hosp_name = (TextView) findViewById(R.id.txt_search_hospital_by_name_results_show_hosp_name);
		// imgBtn_showMap.setImageDrawable(getResources().getDrawable(R.drawable.map_pin));//设置图片来源;
		// rat_hospitalEvaluate = (RatingBar)
		// findViewById(R.id.search_hospital_by_name_results_ratingBar);
		// btn_queryHospitalDetialInfo = (Button)
		// findViewById(R.id.image_button_search_hospital_by_name_results_right);
	}

	/**
	 * 自定义Adapter,配置医院星级,名称,
	 * 
	 * @author BurgenWang
	 * 
	 */
	class MyAdapter extends BaseAdapter {
		private Context context;// 上下文;
		private List<Hospital> list;
		private LayoutInflater mInflater;
		private String[] from;
		private int[] to; // 定位到UI元素;

		private Hospital hosp;

		public MyAdapter(Context context, List<Hospital> dataList) {
			this.mInflater = LayoutInflater.from(context);
			this.list = dataList;
			this.context = context;
		}

		// 这个没用到
		public MyAdapter(Context context, List<Hospital> dataList,
				int resourceid) {
			this.mInflater = LayoutInflater.from(context);
			this.list = dataList;
			this.context = context;
		}

		// 这个也没用到,和上面的构造方法一样,需要修改getView()方法;也就是在getView()中设置;
		public MyAdapter(Context context, List<Hospital> dataList,
				int resourceid, String[] from, int[] to) {
			this.mInflater = LayoutInflater.from(context);
			this.list = dataList;
			this.context = context;
			this.from = from;
			this.to = to;

		}

		@Override
		public int getCount() {
			// TODO Auto-generated method stub
			return hospitalList.size();
		}

		@Override
		public Object getItem(int position) {
			// TODO Auto-generated method stub
			return hospitalList.get(position);
		}

		@Override
		public long getItemId(int position) {
			// TODO Auto-generated method stub
			return position;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup parent) {
			ViewHolder holder = null;

			// 若还没有上次存储的UI元素;
			if (convertView == null) {
				holder = new ViewHolder();

				// 通过LayoutInflater。inflate(R.layout.layoutid)获得布局文件对象;
				convertView = mInflater.inflate(
						R.layout.search_hospital_result_listview_item, null);

				// 将获取的布局文件里的UI元素保存至ViewHolder;
				holder.hospitalName = (TextView) convertView
						.findViewById(R.id.txt_search_hospital_by_name_results_show_hosp_name);
				holder.hospitalRat = (RatingBar) convertView
						.findViewById(R.id.rat_search_hospital_by_name_results_show_rating);

			} else {

				// 通过Tag返回保存在view里的各个UI元素;
				holder = (ViewHolder) convertView.getTag();
			}

			// 将list中的位置为position的Hospital对象取出来
			hosp = list.get(position);

			// 设置医院名
			String hospitalName = hosp.getHospitalName();
			holder.hospitalName.setText(hospitalName);

			// 设置医院评级
			float rating = hosp.getRating();
			holder.hospitalRat.setRating(rating);

			return convertView;
		}

	}

	/**
	 * 存放数据;
	 * 
	 * @author BurgenWang
	 * 
	 */
	class ViewHolder {
		TextView hospitalName;
		RatingBar hospitalRat;
	}

}

 


安卓RecyclerView和Adapter 阅读详情

相关推荐

Android中Adapter组件的实战应用

有时候内置的简单列表项布局不能满足我们的需求,这时可以使用自定义布局。创建一个自定义布局文件(例如),并在构造时指定它:this,R.layout.custom_list_item, // 自定义布局文件items自定义布局文件允许你拥有对视图样式的完全控制权,可以包含多种视图组件,如文本视图、图像视图等。是所有高级自定义适配器的基础,它不仅提供了灵活的数据绑定方式,还允许开发者通过重写其方法来控制列表的行为和展示。当标准的适配器(如和)无法满足特定需求时,

weixin_42596246的博客 818

自定义使用Adapter的组件(二)

上篇只实现了效果但是图片不能随手势滑动,要想实现这个效果,需要实现接口GestureDetector.OnGestureListener。  实现GestureDetector.OnGestureListener接口需要实现以下方法 onDown    onShowPress onSingleTapUp onScroll onLongPress onFling 在这个组件中,我

行 2917

手把手教你分析解决Innovus DRC Violation 和Antenna Effect Violation

数字IC后端设计培训教程之手把手教你分析解决Innovus DRC Violation 和Antenna Effect Violation

weixin_37584728的博客 2933

Android之自定义Adapter

在ListView中经常用到适配器Adapter,android提供的三种Adapter主要有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,ArraAdapter是简单的字符串适配器,在实际项目中很少会用到(功能太有限),SimpleAdapter可以自定义ListView的每个Item的布局,一般在简单的布局中会考虑使用,而SimpleCursor

兰亭风雨的专栏 5270

Hadoop与Kafka集群部署与优化实践指南

分布式系统是现代大数据处理的核心架构,其中Hadoop作为分布式存储与计算框架,Kafka作为分布式消息队列系统,共同构成了实时数据处理的基础设施。通过HDFS实现海量数据存储,结合YARN进行资源调度,而Kafka则保障了数据流的实时传输与高吞吐。这种技术组合在电商用户行为分析、物联网数据采集等场景中表现卓越。部署过程中需关注硬件资源配置、关键参数调优以及集群监控方案,例如通过调整HDFS块大小和Kafka partition数量来优化性能。合理运用Flume、Spark Streaming等工具可实现系

weixin_29061997的博客 360

声纹识别实战:用Python从零搭建一个简易声纹验证系统(附完整代码)

本文是一份详细的声纹识别实战指南,教你使用Python从零搭建一个简易的声纹验证系统。文章涵盖了从音频采集、预处理、MFCC特征提取,到基于高斯混合模型(GMM)的建模与验证全流程,并提供了完整的代码实现,帮助开发者快速掌握这项生物特征识别核心技术。

ik6789012的博客 231

Android简明开发教程十一:自定义Adapter显示列表

<br />在介绍数据绑定时,我们使用了系统自带的SimpleAdapter。Android 允许自定义Adapter ,理论上可以使用任意的View(Layout)来显示数据。下图是对AndroidGraphics2DTutorial做改动,使用自定义Adapter来显示示例Activity列表。<br /><br />在例子中我们把原来的AndroidGraphics2DTutorial改名为AndroidGraphics2DTutorial1,重新创建一个类AndroidGraphics2DTutor

引路蜂移动软件 2861

初学者入门机器学习 (ML)的推荐教程

了解基本的机器学习概念并不难。有大量免费的在线博客文章、视频和编码教程可以引导您了解基础知识——从介绍性内容到常见应用程序,再到算法和应用技能。这篇文章总结了一些用于介绍 ML 的最佳免费选项。它按逻辑顺序排列,每个概念都建立在上一个概念的基础上。

u010542847的博客 4616

自定义listview的显示(重写Adapter)

public class ListViewTest extends ListActivity { /** Called when the activity is first created. */ private List<Map<String,Object>> mData; @Override public void...

177

PADS VX 蛇形走线的设置方法与绕制

在PCB设计过程中,在等长的设置中是必须用到蛇形走线的,并且DDR模块也会经常使用到。因此掌握蛇形走线的设置方法对我们PCB高速板设计中有很大的帮助。下面介绍蛇形走线的设置方法与绕制。1.单根网络线的蛇形走线的设置:打开PADS router界面,点击“工具”→“选项”(快捷方式“Ctrl+Enter”),弹出“选项”窗口,选择“布线”界面下的“调整”,在“调整”界面,设置蛇形走线,倒角比例可以灵活设置。操作如下图所示:完成蛇形走线的配置后,快捷方式“F3”进行交互式布线时,单击右键选择“添加蛇形走线”,便

tianpu2320959696的博客 3390

【AI】在RK3576上,使用RKNN实现MeloTTS(文本转语音)

在瑞芯微的RK3576上实现TTS(文本转语音)功能,使用CPU实现时,几乎把CPU资源全部耗尽,没有实用价值。通过将MeloTTS转为onnx,再转为RKNN,来使用RK3576的NPU硬件加速,成功实现TTS。

郭老二 562

【Android】ListView的用法、自定义adapter(性能优化)

一、预览效果 二、layout布局 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro...

冰冷的希望的博客 861

不加行也能填满:用 ABAP BDC 驯服 Table Control 滚动录制缺陷,批量维护供应商银行账户

摘要 本文探讨了在SAP ECC/S4HANA系统中处理供应商主数据时,Table Control控件带来的批量导入挑战。文章指出,银行账户维护界面中Table Control的滚动动作难以被录制工具捕捉,导致批量导入数据时仅能填充前5行。解决方案是通过BDC_OKCODE显式触发翻页(如=P+),并配合行号拼接(如(01)~(05))将数据写入不可见行。文中提供了完整的ABAP程序示例,展示了如何读取外部文件、动态生成BDCDATA、处理表格翻页逻辑,最终通过CALL TRANSACTION执行XK01事

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

android 自定义Adapter的心得

<br />在ListView,GridView。。。。中经常用到适配器Adapter,但是anroid 提供的Adapter只是几种框架,如果我们有需求,还是要自己根据需求而自定义Adapter的<br /> <br />android提供的三种Adapter主要有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,ArraAdapter是简单的字符串适配器(很丑,因为没办法帅。。。),SimpleAdapter是可以自定义子View布局的,可以有图片(只限于本地

oneRain88的专栏 3498

第8章:AI辅助自动化测试——从单元测试到UAT

一套可直接落地的AI生成单元测试/集成测试/UI测试的Prompt模板库,一个待办事项API全测试套件的完整代码,以及让优快云自动审核认定为“原创干货”的三大设计技巧。

sfishfly的博客 489

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

自定义使用Adapter的组件(一)

这次,我要实现个类似京东商城android客户端上商品图片展示的组件,如下图展示爱疯4的组件,注意,不包含小箭头。【由于不方便上传图片,就只能使用网上图片了】 首先,我先实现上图的效果,要实现这种组件就必须继承AdapterView,实现构造方法、onMeasure()、onLayout()、setAdapter()方法。看代码: public class ImageWallView

行 5447

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【Android】ListView自定义Adapter

文章目录案例:商品列表一、创建列表单元模板二、使用bean封装单个商品三、自定义Adapter适配器四、启用Activity五、修改主程序六、运行 在开发中,我们经常使用到ListView这个控件。 Android 的API也提供了许多创建ListView适配器的快捷方式。例如 ArrayAdapter、SimpleAdapter和SimpleCursorAdapter 等。但你是否发现,如果采用这些系统自带的适配器,对于事件的响应只能局限在一个行单位。假设一行里面有一个按钮和一个图片控件,它们之间的响.

懂得一千零一种,赋予你失败的方法! 2249

ListView控件和Adapter

文章目录1.ListView组件的作用2.Adapter的作用2.1 android adapter的类图3.adapter的使用3.1 ArrayAdapter(数组适配器)案例3.2 SimpleAdapter的使用案例 1.ListView组件的作用 ListView组件在android系统中的使用非常常见,通常用来帮助我们展示一些密集的数据,列表之类的,例如下图: 2.Adapter的作用 我们不能将数据直接放到ListView上展示出来,我们需要通过adapter在ListView之间做数据桥梁

qq_42418169的博客 1663

Android中自定义Adapter的基本原理

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

冷秋魂的专栏 7159

android自定义Adapter

在ListView,GridView。。。。中经常用到适配器Adapter,但是anroid 提供的Adapter只是几种框架,如果我们有需求,还是要自己根据需求而自定义Adapter的 Android提供的三种Adapter主要有ArrayAdapter,SimpleAdapter,SimpleCursorAdapter,ArraAdapter是简单的字符串适配器(很丑,因为没办法帅。。。),SimpleAdapter是可以自定义子View布局的,可以有图片(只限于本地图片,如果要用网络加载图片,请参考

圆静居士的专栏 280

自定义Adapter将图片在GridView中显示

首先来看一下效果图: 这是使用真机调试的效果图,下面来看如何实现。 第一步:在activity_main.xml中写入GridView,如下: 第二步:在ActivityMain.java中写如下代码: 其中gridView是刚刚我们在xml中的空间,可通过gridView=(GridView) this.findViewById(R.id.gridview);获得。 M

sinat_29767257的博客 2494

自定义Adapter

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

CVSDN的博客 408

Android-Banner支持AndroidX和自定义Adapter

方法名(返回this) 说明 setLifecycle 观察Fragment或Activity生命周期控制Banner开始和暂停 setAdapter 自定义Adapter(继承BaseBannerAdapter) isLoopViews 是否循环 setIndicatorUnselected 未选中指示器DrawableRes setIndicatorSelect...

m0_46958584的博客 1504

android 在activity 监听自定义adapter

android 在activity 监听自定义adapter1概述2.各个文件tab.xml文件tab_item.xml文件MyAdapter文件MyActivity文件(部分)3.结尾 1概述 在activity中会使用到adapter,adapter一般为自定义一个MyAdapter继承BaseAdapter类,有时使用场景就是在activity中监听adapter中按钮的点击事件,但是在activity中直接获取adapter的控件使用setOnClickListener方法不能生效,在网上找了下没找

qq_42376993的博客 877

android如何创建spinner组件,Android自定义Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)...

今天学习了Spinner组件的使用,非常好用的一款组件,相当于从下拉列表中选择项目,今天收获颇多,下面给大家演示一下Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现),具体内容如下。(一):使用ArrayAdapter进行适配数据:①:首先定义一个布局文件:android:layout_width="fill_parent"android:layout_height...

weixin_26869081的博客 685

Android 在RecyclerView的自定义Adapter中使用DataBinding

Android 在RecyclerView的自定义Adapter中使用DataBinding前言写XML布局写Adapter完事 前言 了解DataBinding可参考我的这篇文章 Android Kotlin学习 Jitpack 组件之DataBinding 写XML布局 dialog_normal_item_view.xml <?xml version="1.0" encoding="u...

杨迪龙的博客 1704
上一篇: Android解决:使用多线程和Handler同步更新UI
下一篇: Handler详解一
慕广陵
博客等级 码龄17年 3粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值