当前位置: 首页 > news >正文

Android开发指南-用户界面-绑定数据

AdapterView绑定数据Binding to Data with AdapterView

AdapterViewViewGroup的子类,其子视图由绑定某类型数据的适配器Adapter决定。AdapterView用于当你需要在布局中显示存储数据时(不是字符串或可绘制资源)。

画廊Gallery,列表视图ListView,和微调控件Spinner就是适配器视图AdapterView子类的例子,用来绑定到特定类型的数据并以一定的方式显示。

AdapterView对象有两个主要责任:

· 用数据填充布局

· 处理用户的选择

用数据填充布局Filling the Layout with Data

通常是通过绑定AdapterView类到一个适配器Adapter来插入数据到布局中,这从外部获取数据(可能是代码中所提供的一个列表数据,或者是设备数据库中的查询结果)。

下面的代码示例执行以下操作:

1. 用现有的一个视图创建一个微调控件Spinner并将其绑定到一个新的ArrayAdapter,该适配器从本地资源中读取颜色数组。

2. 从一个视图创建另外的微调对象,并将其绑定到一个新的SimpleCursorAdapter,将从设备联系人中读取人名(见Contacts.People)。

// Get a Spinner and bind it to an ArrayAdapter that 
// references a String array.
Spinner s1 = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter adapter = ArrayAdapter.createFromResource(
 this, R.array.colors, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s1.setAdapter(adapter);
// Load a Spinner and bind it to a data query.
private static String[] PROJECTION = new String[] {
 People._ID, People.NAME
 };
Spinner s2 = (Spinner) findViewById(R.id.spinner2);
Cursor cur = managedQuery(People.CONTENT_URI, PROJECTION, null, null);
 
SimpleCursorAdapter adapter2 = new SimpleCursorAdapter(this,
 android.R.layout.simple_spinner_item, // Use a template
 // that displays a
 // text view
 cur, // Give the cursor to the list adatper
 new String[] {People.NAME}, // Map the NAME column in the
 // people database to...
 new int[] {android.R.id.text1}); // The "text1" view defined in
 // the XML template
  
adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s2.setAdapter(adapter2);

注意Projection中的People._ID列是必须的,否则你将收到一个异常。

如果,在你的应用程序生命周期过程中,你改变了适配器所读取的下层数据,你应该调用notifyDataSetChanged()方法。这将通知附着视图数据已经更改,它需要刷新自己。

处理用户的选择Handling User Selections

你通过设置类的AdapterView.OnItemClickListener成员变量为一个侦听器来处理用户的选择并且捕获选择变化。

// Create a message handling object as an anonymous class.
private OnItemClickListener mMessageClickedHandler = new OnItemClickListener() {
 public void onItemClick(AdapterView parent, View v, int position, long id)
 {
 // Display a messagebox.
 Toast.makeText(mContext,"You've got an event",Toast.LENGTH_SHORT).show();
 }
};
// Now hook into our object and set its onItemClickListener member
// to our class handler object.
mHistoryView = (ListView)findViewById(R.id.history);
mHistoryView.setOnItemClickListener(mMessageClickedHandler); 

想了解更多有关如何创建不同AdapterViews讨论,请阅读以下教程: Hello Spinner, Hello ListView, Hello GridView

相关文章:

  • UVa 1152 - 4 Values whose Sum is 0(hash_map/hash/二分查找)
  • Android开发指南-用户界面-绘制视图
  • 摆脱枯燥的文字描述——markdown表情包黑科技
  • 真正要寻找的是那些充满了热情,希望做出点成绩来的人
  • UVa11134 Fabled Rooks(贪心)
  • 给各位支持我的朋友的致歉信
  • 计算几何——极角排序
  • 不同差异程度商品的电子商务策略
  • UVa1606 Amphiphilic Carbon Molecules(极角排序+扫描线)
  • 滴水之光 折射太阳
  • POJ3061 Subsequence(尺取法)
  • UVa11572 Unique Snowflakes(尺取法)
  • 对MM平台的一些思考
  • 2019 ICPC Asia Taipei - Hsinchu Regional
  • Android游戏的盈利模式探讨
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • CAP 一致性协议及应用解析
  • exports和module.exports
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java深入 - 深入理解Java集合
  • python docx文档转html页面
  • Python学习笔记 字符串拼接
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 力扣(LeetCode)56
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • gunicorn工作原理
  • 进程与线程(三)——进程/线程间通信
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #define与typedef区别
  • #Ubuntu(修改root信息)
  • #Z2294. 打印树的直径
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .Mobi域名介绍
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .net core控制台应用程序初识
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .Net Remoting(分离服务程序实现) - Part.3
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .Net(C#)自定义WinForm控件之小结篇
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • .NET开源项目介绍及资源推荐:数据持久层
  • .NET企业级应用架构设计系列之技术选型
  • .NET中 MVC 工厂模式浅析
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • [Angular] 笔记 21:@ViewChild
  • [C++]指针与结构体
  • [CF482B]Interesting Array
  • [Docker]十.Docker Swarm讲解