`

【翻译】(24)用AdapterView绑定到数据

 
阅读更多

 

【翻译】(24)用AdapterView绑定到数据

 

see

http://developer.android.com/guide/topics/ui/binding.html

 

原文见

http://developer.android.com/guide/topics/ui/binding.html

 

-------------------------------

 

Binding to Data with AdapterView

 

用AdapterView绑定到数据

 

In this document

 

本文目录

 

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

Handling User Selections 处理用户选择

 

Related tutorials

 

相关教程

 

Spinner

List View

Grid View

 

-------------------------------

 

The AdapterView is a ViewGroup subclass whose child Views are determined by an Adapter that binds to data of some type. AdapterView is useful whenever you need to display stored data (as opposed to resource strings or drawables) in your layout.

 

AdapterView是一个ViewGroup子类,它的子视图由一个绑定到一些类型的数据的Adapter决定。无论是你需要何时在你的布局中显示存储的数据(不同于资源字符串或可绘画对象),AdapterView都很有用。

 

Gallery, ListView, and Spinner are examples of AdapterView subclasses that you can use to bind to a specific type of data and display it in a certain way.

 

Gallery,ListView和Spinner是AdapterView子类的示例,你可以使用它们绑定到一个特定类型的数据并且以某种方式显示它。

 

AdapterView objects have two main responsibilities:

 

AdapterView对象拥有两个主要职责:

 

* Filling the layout with data 用数据填充布局

* Handling user selections 处理用户选择

 

-------------------------------

 

Filling the Layout with Data 

 

用数据填充布局

 

Inserting data into the layout is typically done by binding the AdapterView class to an Adapter, which retrieves data from an external source (perhaps a list that the code supplies or query results from the device's database).

 

插入数据进布局是典型地通过绑定AdapterView类到一个从外部源(可能是一个代码提供的列表或从设备数据库中查询的结果)中取出数据的Adapter来做到的。

 

The following code sample does the following:

 

以下代码示例做以下事情:

 

1. Creates a Spinner with an existing View and binds it to a new ArrayAdapter that reads an array of colors from the local resources.

 

1. 用一个现存View创建一个Spinner并且绑定它到一个从局部资源中读取颜色数组的新ArrayAdapter。

 

2. Creates another Spinner object from a View and binds it to a new SimpleCursorAdapter that will read people's names from the device contacts (see Contacts.People).

 

2. 从一个View中创建另一个Spinner典型并且绑定它到一个从设备电话簿中读取联系人名称的新SimpleCursorAdapter(见Contacts.People)。

 

-------------------------------

 

// Get a Spinner and bind it to an ArrayAdapter that 

// references a String array.

// 获取一个Spinner并把它绑定到引用一个String数组的ArrayAdapter。

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.

// 加载一个Spinner并绑定它到一个数据查询。

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...

                                // 映射联系人数据库的NAME列到……

    new int[] {android.R.id.text1}); // The "text1" view defined in

                                     // the XML template

                                     // "text1"视图定义在XML模板中

 

adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

s2.setAdapter(adapter2);

 

-------------------------------

 

Note that it is necessary to have the People._ID column in projection used with CursorAdapter or else you will get an exception.

 

注意必须在投影中有People._ID列被CursorAdapter使用,否则你将得到一个异常。

 

If, during the course of your application's life, you change the underlying data that is read by your Adapter, you should call notifyDataSetChanged(). This will notify the attached View that the data has been changed and it should refresh itself.

 

如果,在你的应用程序的生命过程间,你改变被你的Adapter读取的底层数据,那么你应该调用notifyDataSetChanged()。这将通知被依附的View数据已经被改变并且它应该刷新自己。

 

-------------------------------

 

Handling User Selections

 

处理用户选择

 

You handle the user's selection by setting the class's AdapterView.OnItemClickListener member to a listener and catching the selection changes.

 

你通过设置类的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.

// 现在挂钩进我们的对象并且设置它的onItemClickListener成员

// 为我们的类处理对象。

mHistoryView = (ListView)findViewById(R.id.history);

mHistoryView.setOnItemClickListener(mMessageClickedHandler); 

 

-------------------------------

 

-------------------------------

 

For more discussion on how to create different AdapterViews, read the following tutorials: Hello Spinner, Hello ListView, and Hello GridView.

 

想获取更多关于如何创建不同AdapterViews的讨论,请阅读以下教程:你好Spinner,你好ListView,以及你好GridView。

 

-------------------------------

 

Except as noted, this content is licensed under Apache 2.0. For details and restrictions, see the Content License.

 

除特别说明外,本文在Apache 2.0下许可。细节和限制请参考内容许可证。

 

Android 4.0 r1 - 16 Dec 2011 21:54

 

-------------------------------

 

Portions of this page are modifications based on work created and shared by the Android Open Source Project and used according to terms described in the Creative Commons 2.5 Attribution License.

 

(此页部分内容基于Android开源项目,以及使用根据创作公共2.5来源许可证描述的条款进行修改)


分享到:
评论

相关推荐

    自定义Android的AdapterView

    总之,自定义Android的AdapterView涉及到数据适配、视图复用、测量布局、滚动处理等多个关键知识点。通过实现这些功能,你可以创建出符合特定需求的自定义视图组件,提高应用的用户体验。记得在实现过程中注重性能...

    AdapterView

    一个AdapterView工具,仿照Android里面的AdapterView,用于Unity中

    android studio移动开发基础:adapterview PPT

    AdapterView 的相关理论主要涉及到 Adapter 接口的实现。Adapter 接口负责管理数据,并将数据转换成可显示的组件。AdapterView 通过 Adapter 接口对象来访问数据,并将数据呈现出来。 AdapterView 的实践 —— ...

    1.7 自定义AdapterView的空视图

    AdapterView通过一个ListAdapter来绑定数据源,ListAdapter负责将数据转化为视图。当数据为空时,AdapterView默认会显示一个简单的“无数据”提示,但这样的提示往往过于简单,不能满足复杂的设计需求。因此,我们...

    ListView与数组的绑定

    在本教程中,我们将探讨如何将一个数组的数据绑定到ListView上,以便用户可以清晰地查看和交互这些信息。下面将详细介绍这个过程。 首先,我们需要创建一个数组,它将存储要显示在ListView中的数据。这个数组可以是...

    数据库的增删改查——绑定Listview

    至此,我们已经实现了使用SQLite数据库进行数据操作,并将数据绑定到Listview进行显示。同时,我们也为ListView的item设置了点击事件和长按点击事件。在实际开发中,你可以根据需求对这些事件进行具体处理,例如跳转...

    android之各种Adapter加载数据

    3. **实现数据绑定**:在Adapter的`getView()`方法中,将数据项与视图元素进行绑定。通常,为了性能优化,会复用convertView(已存在的视图)。 4. **数据更新**:当数据源发生变化时,需要调用Adapter的相关方法...

    第6讲用户界面(3)——绑定类组件.pdf

    在Android开发中,用户界面的设计至关重要,尤其是涉及到数据展示的场景。其中,AdapterView组件和Adapter是构建动态数据视图的核心元素。AdapterView是一组视图类,包括ListView、Spinner、Gallery和GridView等,...

    ListView滚动到底部自动加载剩余数据

    在后台线程中,从服务器或本地数据库获取新的数据,处理数据(例如解析JSON、数据库查询等),并更新到数据源(可能是ArrayList或其他数据结构)。 5. **通知ListView数据变更**: 数据加载完成后,需要通知...

    ListView是Android中比较难以使用的控件,布局,适配

    适配器是一个连接数据和AdapterView(ListView就是一个典型的AdapterView,后面还会学习其他的)的桥梁,通过它能有效地实现数据与AdapterView的分离设置,使AdapterView与数据的绑定更加简便,修改更加方便 ...

    数据保存与Spinner控件

    ArrayAdapter是Android中的适配器类,它可以将数据绑定到UI组件,如ListView或Spinner。创建ArrayAdapter时,需要传入上下文、资源ID(定义Spinner项的布局)和数据集。 4. 设置Adapter: 在Java代码中,使用...

    常用Adapter配合ListView使用实例

    在实际应用中,我们通常会结合Adapter来使用ListView,Adapter扮演着数据源和ListView之间的桥梁角色,将数据转化为ListView可识别的视图元素。本教程将通过一个名为“Demo_ListView”的实例详细介绍如何在Android中...

    ListView和SimpleAdapter的简单应用

    SimpleAdapter则是ListView常用的适配器,它简化了数据绑定和UI展示的过程。本篇文章将深入探讨ListView和SimpleAdapter的基本使用以及它们在实际应用中的结合。 ### 1. ListView简介 ListView是Android SDK提供的...

    Android Realm+gridview gridviewItem点击更新保存数据

    适配器会负责从 Realm 获取数据并将其绑定到 GridView 的各个项上。 ```java public class RealmDataAdapter extends BaseAdapter { private Context context; private List<DataModel> dataList; public ...

    利用JDBC读取mysql数据展示在listview

    在本教程中,我们将深入探讨如何使用Java的JDBC(Java Database Connectivity)接口来从MySQL数据库中读取数据,并将这些数据动态地显示在Android应用的ListView组件上,同时利用SimpleAdapter进行数据绑定。...

    ListView下拉刷新获取数据库数据

    `ListView下拉刷新获取数据库数据`这个主题涉及到了ListView的交互更新以及如何从数据库中动态加载数据。在这个场景中,用户通过下拉ListView的动作触发刷新操作,系统则从数据库中获取新的数据并更新到ListView上,...

    anroid_listView的基本使用_加上数据源

    本例中,我们使用ArrayAdapter,它适合简单的数据绑定。创建一个ArrayAdapter的子类,重写`getView()`方法来填充列表项。例如: ```java public class MyAdapter extends ArrayAdapter<String> { public MyAdapter...

    安卓省市县三级联动,解析json数据,返回省市县的id

    使用Adapter可以方便地将解析出的JSON数据绑定到Spinner上。 ```java ArrayAdapter<String> adapter; adapter = new ArrayAdapter(context, android.R.layout.simple_spinner_item, cityList); spinner.setAdapter...

    listtview绑定checkbox

    1. 增加功能:可以在ListView底部添加一个“添加”按钮,点击后弹出输入框让用户输入新数据,然后将新数据添加到数据列表并调用Adapter的`notifyDataSetChanged()`方法刷新界面: ```java Button addButton = ...

    ArrayAdapter和SimpleAdapter使用

    在Android开发中,数据绑定到UI控件是一个常见的任务,ArrayAdapter和SimpleAdapter是两种常用的适配器,用于将数据集映射到ListView等视图组件。本文将深入探讨这两种适配器的使用方法和它们之间的区别。 首先,...

Global site tag (gtag.js) - Google Analytics