Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 682|回复: 0

《Android Dev Guide》系列教程18:通过适配器给AdapterView绑定

[复制链接]

该用户从未签到

发表于 2011-10-25 08:49:09 | 显示全部楼层 |阅读模式
AdapterView是ViewGroup的一个子类,由一个适配器,和绑定到适配器的某些类型的数据组合而成。当你需要显示一些存储的数据时,AdapterView是非常有用的。
Gallery、ListView和Spinner便是AdapterView的例子,他们可以让你使用一些特殊格式的数据并且用一种特定的方式来显示这些数据。
ApapterView对象有两个主要职责:
@ 用数据来填充视图
@ 处理用户的操作事件



给视图填充数据
把数据插入到视图里,通常是由绑定适配器的AdapterView类来完成的,通常是从一些额外的存储中获得的数据,比如代码来提供或者从设备的数据库中查询的结果集。例如下面的代码:
1-使用一个已存在的View建立一个Spinner,然后绑定一个ArrayAdapter类来从本地资源里读取颜色列表。
2-建立另一个Spinner对象,绑定到一个SimpleCursorAdapter类,然后从手机的联系人列表读取联系人的名字。

// 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 adapter  

    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()方法。这样视图便会做出相应更新。


处理用户的选择事件通过实现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);  
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

GMT+8, 2025-1-11 14:06 , Processed in 0.292307 second(s), 36 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表