Android第八天
- 将数据填充到布局;
- 处理用户的选择点击等操作。
- 1.ListVeiw:用来展示列表的View;
- 2.适配器: 用来把数据映射到ListView上的中介;
- 3.数据源: 具体的将被映射的字符串,图片,或者基本组件。
- ArrayAdapter最为简单,只能展示一行字;
- SimpleAdapter有最好的扩充性,可以自定义各种各样的布局,除了文本外,还可以放ImageView(图片)、Button(按钮)、CheckBox(复选框)等等;
- SimpleCursorAdapter可以认为是SimpleAdapter对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。
- 但是实际工作中,常用自定义适配器。即继承于BaseAdapter的自定义适配器类。
String[] strArr = new String[] { "yuhongxing", "sunshengling","chenyanzhang", "huangchao", "liupengfei" }; listView_main_userList = (ListView) findViewById(R.id.listView_main_userlist); ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, strArr); listView_main_userList.setAdapter(adapter);
publicclass MainActivity extends Activity { privatestaticfinal String TAG = "MainActivity"; private ListView listView_main_news; private List<Map<String, String>> list = null; @Override protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView_main_news = (ListView) findViewById(R.id.listView_main_news); list = new ArrayList<Map<String, String>>(); for (int i = 0; i < 5; i++) { Map<String, String> map = new HashMap<String, String>(); map.put("username", "wangxiangjun_" + i); map.put("password", "123456_" + i); list.add(map); }Log.i(TAG, "==" + list.toString());
// 定义SimpleAdapter适配器。 // 使用SimpleAdapter来作为ListView的适配器,比ArrayAdapter能展现更复杂的布局效果。为了显示较为复杂的ListView的item效果,需要写一个xml布局文件,来设置ListView中每一个item的格式。
SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.item_listview_main, new String[] { "username", "password" }, newint[] { R.id.text_item_listview_username, R.id.text_item_listview_pwd }); listView_main_news.setAdapter(adapter); } @Override publicboolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); returntrue; } }
(三)、SimpleAdapter实现多行文本且带 图片ListView:
publicclass MainActivity extends Activity { private ListView listView_main_regmsg; privateint[] imgIds = newint[] { R.drawable.pic01, R.drawable.pic02, R.drawable.pic03, R.drawable.pic04 }; @Override protectedvoid onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); listView_main_regmsg = (ListView) findViewById(R.id.listView_main_regmsg); // 创建数据源 List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); for (int i = 0; i < imgIds.length; i++) { Map<String, Object> map = new HashMap<String, Object>(); map.put("username", "wanglu_" + i); map.put("pwd", "123456_" + i); map.put("imgId", imgIds[i]); list.add(map); } /* * 常用的SimpleAdapter的构造方法有五个参数: * * @param context :表示上下文对象或者环境对象。 * * @param data :表示数据源。往往采用List<Map<String, Object>>集合对象。 * * @param resource :自定义的ListView中每个item的布局文件。用R.layout.文件名的形式来调用。 * * @param from :其实是数据源中Map的key组成的一个String数组。 * * @param to :表示数据源中Map的value要放置在item中的哪个控件位置上。其实就是自定义的item布局文件中每个控件的id。 * 通过R.id.id名字的形式来调用。 */ SimpleAdapter adapter = new SimpleAdapter(this, list, R.layout.item_listview_main, new String[] { "username", "pwd", "imgId" }, newint[] { R.id.text_item_listview_username, R.id.text_item_listview_pwd, R.id.imageView_item_listview_headpic }); // 给ListView设置适配器listView_main_regmsg.setAdapter(adapter); } @Override publicboolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); returntrue; } }
- 实现未实现的方法:getCount() 、getItem()、 getItemId()、 getView();
- 定义内部类ViewHolder,将item布局文件中的控件都定义成属性;
- 构建一个布局填充器对象:LayoutInflater.from(context);
- 调用布局填充器对象的inflate()方法填充item布局文件,将返回的view对象赋值给convertView;
- 调用convertView对象的findViewById()获取item布局中的控件,将控件对象赋值给ViewHolder中的属性;
- 给convertView对象设置标签,也就是调用setTag()方法,将ViewHolder对象作为标签贴在convertView对象上;
- 从根据convertView的标签,从convertView对象上取回ViewHolder对象。
class MyAdapter extends BaseAdapter {private Context context = null;public MyAdapter(Context context) {this.context = context;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder mHolder;if (convertView == null) {mHolder = new ViewHolder();LayoutInflater inflater = LayoutInflater.from(context);convertView = inflater.inflate(R.layout.item_listview_main_userlist, null, true);mHolder.text_item_listview_username = (TextView) convertView.findViewById(R.id.text_item_listview_username);mHolder.text_item_listview_email = (TextView) convertView.findViewById(R.id.text_item_listview_email);mHolder.imageView_item_listview_headpic = (ImageView) convertView.findViewById(R.id.imageView_item_listview_headpic);convertView.setTag(mHolder);} else {mHolder = (ViewHolder) convertView.getTag();}String username = list.get(position).get("username").toString();String email = list.get(position).get("email").toString();int picId = Integer.parseInt(list.get(position).get("headpic").toString());
mHolder.text_item_listview_username.setText(username);mHolder.text_item_listview_email.setText(email);mHolder.imageView_item_listview_headpic.setImageResource(picId);return convertView;}class ViewHolder {private TextView text_item_listview_username;private TextView text_item_listview_email;private ImageView imageView_item_listview_headpic;} }
Android第八天相关推荐
- APP开发流程实例讲解-儒释道网络电台八天开发全程-在Android Studio中完成界面设计
APP开发流程实例讲解-儒释道网络电台八天开发全程 功能和界面初步设定 APP开发流程实例讲解-儒释道网络电台八天开发全程 项目发起 功能和界面初步设定 在Android Studio中完成界面设计 ...
- Android核心基础第八天
一.学习目标及要求 课程目标 课程内容(必须讲的内容,就是讲课的知识点的顺序) * 掌握从系统获取一张图片 * 掌握android下大图片处理 * 掌握画笔 画布 * 熟悉触摸事件 * 掌握图片旋转 ...
- android从放弃到精通 第八天 freedom
8-3短信提醒-自定义短信弹框提醒 //0关于前面的短信提醒接收不到的问题,有一点需要牢记在心,android6.0以上版本的权限问题, ,至少在当前的情况下,在android8.0的虚拟机上解决相应 ...
- 3G手机Android应用开发视频教程_黎活明老师的视频(第三天课程)总共有八天课程...
下载地址:http://jiyanet.com/read.php?tid=402 转载于:https://www.cnblogs.com/javaspring/archive/2012/08/21/2 ...
- 3G手机Android应用开发视频教程_黎活明老师的视频(第五天课程)总共有八天课程...
下载地址:http://jiyanet.com/read.php?tid=404 转载于:https://www.cnblogs.com/javaspring/archive/2012/08/22/2 ...
- 3G手机Android应用开发视频教程_黎活明老师的视频下载地址(总共有八天课程)
视频下载地址:http://jiyanet.com/read.php?tid=404
- 菜鸟要飞java_Java Android视频教程 下载
安卓 |____14_Android源码级分析(day69)(更多视频教程关注微信公众号[菜鸟要飞]) |____Android源码级分析.7z |____13_百度地图(day68)(更多视频教程关 ...
- APP开发流程实例讲解-儒释道网络电台八天开发全程-百度云深度兼容测试并进一步优化排错
APP开发流程实例讲解-儒释道网络电台八天开发全程之 百度云深度兼容测试并进一步优化排错 APP开发流程实例讲解-儒释道网络电台八天开发全程 项目发起 功能和界面初步设定 在Android Studi ...
- Alpha冲刺——第八天
Alpha第八天 听说 031502543 周龙荣(队长) 031502615 李家鹏 031502632 伍晨薇 031502637 张柽 031502639 郑秦 1.前言 任务分配是VV.ZQ. ...
最新文章
- openlayers map获取全部feature_tf2.0基础-tf.data与tf.feature_column
- 无法安装到这个磁盘 这台计算机,安装Win7提示无法安装到这个磁盘怎么办
- Spring学习手册番外:context:annotation-config/ 和 mvc:annotation-driven / 的区别
- 【Python】0/1背包、动态规划
- 征战蓝桥 —— 2014年第五届 —— C/C++A组第9题——斐波那契
- 并发工具类纵览——建立起Java并发体系的大厦
- struts2:多业务方法的处理(动态调用,DMI)
- 如何使用 ABAP 手动解析 multipart/form-data 格式的数据
- 论计算机与智能科学类,计算机与智能科学大类培养方案
- UNIX标准化及实现之POSIX标准可选头文件
- 万万没想到,AI算法开发、OCR应用已经进入零门槛时代!
- python selenium框架_python+selenium之框架设计
- 毕啸南专栏 | 对话李开复:AI科学家的转型之路
- TFTP软件测试自学,tftp
- 数据库课程设计实验报告--图书馆管理系统
- 推荐一款源代码统计分析、开发工作量估算、测试缺陷预测的开发工具 —— 代码统计分析工具(SourceCounter)
- 虚拟机中Linux安装可视化界面
- java的web开发之旅——第1站html
- 成功人士成功秘诀的调查报告,拥有梦想至关重要
- java读取excel表格数据
热门文章
- 【KNN】使用KNN算法实现对iris数据集的分类
- 【Tomcat】tomcat logs 目录下各日志文件的含义
- UG NX 12 基准平面
- ArcGIS学习教程免费版在线观看
- comsol with matlab完整案例 sina,[转载]Comsol with Matlab 应用实例(2)
- 【小组专题一:数论入门:整数】数和序列 | 和与积 | 数学归纳与第二数学归纳
- Mac有什么好用的词典软件吗?苹果电脑第三方词典软件推荐
- TED x Brixton
- 计算机科学与技术杂谈
- 让代码优雅起来(学会调试+代码风格)