`

通过适配器给AdapterView绑定数据

阅读更多
使用AdapterView来绑定数据

AdapterView是一个ViewGroup子类, 它的子View是有一个Adapter决定的, 而该Adapter绑定某种类型的数据. AdapterView在你希望显示储存的数据(相对于资源字符串或者图片)时比较有用.

Gallery, ListView, 和 Spinner是AdapterView子类的例子, 你可以使用它们绑定特定类型的数据并按照一定方式来显示它们.

AdapterView对象有两个主要任务:

    * 在布局中显示数据
    * 处理用户的选择

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

将数据插入布局一般是通过将AdapterView类绑定到一个Adapter完成的. Adapter从一个外部资源获取数据(可能是代码直接提供,也可能是从设备上的一个数据库查到的数据组成的一个列表).

下列代码做了两件事情:

   1. 使用一个已有的View创建了一个Spinner, 并将其绑定到一个新的ArrayAdapter, 后者从本地资源中读取一个颜色的数组.
   2. 从一个View创建另一个 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 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);

注意必须People._ID 列必须和CursorAdapter 一起使用, 否则你会得到异常.

如果在你的应用程序生命周期中, 你改变了你的Adapter管理的数据, 你应该调用notifyDataSetChanged(). 这将使附加的View刷新.
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)


AdapterView:




声明

  欢迎转载,但请保留文章原始出处:)

    博客园:http://www.cnblogs.com/

    Android中文翻译组:http://code.taobao.org/project/view/404/



正文
  一、结构

public abstract class AdapterView<T extends Adapter> extends ViewGroup

       

java.lang.Object

android.view.View

         android.view.ViewGroup

                   android.widget.AdapterView<T extends android.widget.Adapter>



直接子类

             AbsListView, AbsSpinner

间接子类

ExpandableListView, Gallery, GridView, ListView, Spinner


  二、概述

AdapterView 是内容由 Adapter 来决定的视图类。

参见 ListView、GridView、Spinner 和 Gallery 等常见子类。



  三、常量

  public static final int INVALID_POSITION

  代表无效的位置。有效值的范围是 0 到当前适配器项目数减 1 。

  常量值: -1 (0xffffffff)



  public static final long INVALID_ROW_ID

  代表空或者无效的行ID。

  常量值: -9223372036854775808 (0x8000000000000000)



  public static final int ITEM_VIEW_TYPE_HEADER_OR_FOOTER

  当条项是列表头或列表尾时,调用 getItemViewType(int) 函数的返回值。

  常量值: -2 (0xfffffffe)



  public static final int ITEM_VIEW_TYPE_IGNORE

  当适配器禁止条项的视图再利用时,调用 getItemViewType(int) 函数的返回值。

  常量值: -1 (0xffffffff)


  四、构造函数

  public AdapterView (Context context)

  构造函数



  public AdapterView (Context context, AttributeSet attrs)

  构造函数



  public AdapterView (Context context, AttributeSet attrs, int defStyle)

  构造函数


  五、公共方法

  public void addView (View child)

  该类不支持该方法,如果调用将抛出 UnsupportedOperationException 异常。

  参数

         child  忽略

      异常

        UnsupportedOperationException 调用该方法时



  public void addView (View child, int index)

  该类不支持该方法,如果调用将抛出 UnsupportedOperationException 异常。

  参数

           child         忽略。

  index       忽略。

  抛出

         UnsupportedOperationException 调用该方法时



  public void addView (View child, int index, ViewGroup.LayoutParams params)

  该类不支持该方法,如果调用将抛出 UnsupportedOperationException 异常。

  参数

           child         忽略。

  index       忽略。

  params  忽略。

  抛出

         UnsupportedOperationException 调用该方法时





  public void addView (View child, ViewGroup.LayoutParams params)

  该类不支持该方法,如果调用将抛出 UnsupportedOperationException 异常。

  参数

       child         忽略。

   params  忽略。

  抛出

         UnsupportedOperationException 调用该方法时



  public boolean dispatchPopulateAccessibilityEvent (AccessibilityEvent event)

  分发 AccessibilityEvent 事件到 该视图 的子视图中。

  参数

         event       事件。

  返回值

  如果事件分发完成,返回真。



  public abstract T getAdapter ()

  返回当前与该小部件关联的适配器。

  返回值

  用于提供视图内容的适配器。



  public int getCount ()

返回值

与 AdapterView 相关联的适配器的条目数量。(该值是数据条目的数量, 可能大于可见的视图的数量。)



  public View getEmptyView ()

  当前适配器无内容时,AdapterView 会显示特殊的空视图。 空视图用于告诉用户,该 AdapterView 没有数据。

  返回值

  适配器为空时显示的视图。



  public int getFirstVisiblePosition ()

  返回显示在屏幕上的第一个元素在适配器中所处的位置。

  返回值

  在适配器数据集中的位置。



  public Object getItemAtPosition (int position)

  取得列表中指定位置的数据。

  参数

         position 要取得数据的位置。

  返回值

  列表中指定位置的数据。



  public long getItemIdAtPosition (int position)

  (译者注:关于此方法的分析,参见这里。)



  public int getLastVisiblePosition ()

  返回显示在屏幕上的最后一个元素在适配器中所处的位置。

  返回值

  在适配器数据集中的位置。



  public final AdapterView.OnItemClickListener getOnItemClickListener ()

返回值

  点击 AdapterView 中的条目时执行的回调函数;没有设置时返回空。



  public final AdapterView.OnItemLongClickListener getOnItemLongClickListener ()

返回值

取得长按 AdapterView 中的条目时执行的回调函数的监听器;未设置则返回空。



  public final AdapterView.OnItemSelectedListener getOnItemSelectedListener ()



  public int getPositionForView (View view)

  取得适配器项目对应的视图或其子视图在适配器的数据中所处的位置。

  参数

         view         适配器条目或其后代的视图。调用时该项目在 AdapterView 中必须可见。

  返回值

  视图在适配器数据集中的位置;如果视图不在数据列表中或当前不可见,则返回 INVALID_POSITION。



  public Object getSelectedItem ()

返回值

当前选中条目对应的数据;无选中条目时返回空。



  public long getSelectedItemId ()

返回值

当前选中条目相应的 ID;无选中条目则返回 INVALID_ROW_ID。



  public int getSelectedItemPosition ()

  返回当前选中项目在适配器数据中的位置。

  返回值

  返回从零开始的位置(索引)信息,没有选择条目时返回 INVALID_POSITION。



  public abstract View getSelectedView ()

返回值

当前选中条目对应的视图;无选中条目时返回空。



  public boolean performItemClick (View view, int position, long id)

  如果定义了 OnItemClickListener 则调用它。

  参数

  view         AdapterView 中被点击的视图。

  position 视图在适配器中的索引。

  id     点击的条目的行 ID。

  返回值

  如果成功调用了定义的 OnItemClickListener 则返回真;否则返回假。



  public void removeAllViews ()

  该类不支持该方法,如果调用将抛出 UnsupportedOperationException 异常。

  抛出

        UnsupportedOperationException调用该方法时



  public void removeView (View child)

  该类不支持该方法,如果调用将抛出 UnsupportedOperationException 异常。

  参数

  child         忽略。

  抛出

         UnsupportedOperationException调用该方法时



  public void removeViewAt (int index)

  该类不支持该方法,如果调用将抛出 UnsupportedOperationException 异常。

  参数

         index       忽略。

  抛出

         UnsupportedOperationException调用该方法时



  public abstract void setAdapter (T adapter)

  设置用于为该小部件的视图提供用于显示的数据的适配器。

  参数

         adapter 用于创建视图内容的适配器。



  public void setEmptyView (View emptyView)

  设置适配器内容为空时显示的视图。



  public void setFocusable (boolean focusable)



  设置该视图是否可以获取焦点。 设为假时,可以确保在触控模式中该视图不能得到焦点。

  参数

         focusable         设为真时,该视图可以得到焦点。



  public void setFocusableInTouchMode (boolean focusable)

  设置在触控模式下该视图是否可以获取焦点。 设为真时,可以保证视图可以得到焦点。

  参数        

             focusable        设为真时,该视图在触控模式下可以得到焦点。



  public void setOnClickListener (View.OnClickListener l)

  注册点击该视图时执行的回调函数。如果该视图不可点击,会将其改为可以点击的状态。

  参数

         l       事件发生时运行的回调函数。



  public void setOnItemClickListener (AdapterView.OnItemClickListener listener)

  注册单击 AdapterView 中的条目时执行的回调函数。

  参数

         listener  将要调用的回调。



  public void setOnItemLongClickListener (AdapterView.OnItemLongClickListener listener)

  注册长按 AdapterView 中的条目时执行的回调函数。

  参数

         listener  事件发生时运行的回调函数。



  public void setOnItemSelectedListener (AdapterView.OnItemSelectedListener listener)

  注册选中 AdapterView 中的条目时执行的回调函数。

  参数

         listener  事件发生时运行的回调函数。



  public abstract void setSelection (int position)

  设置当前选择条目。为了支持无障碍功能,重写该方法的子类必须首先调用父类的该方法。

  参数

         position 选择的数据条目的索引(从零开始)。



  六、保护方法

  protected boolean canAnimate ()

  指示视图组是否能够在首次布局后为其子视图提供动画效果的显示。

  返回值

  如果子视图可以使用动画效果则返回真,否则返回假。



  protected void dispatchRestoreInstanceState (SparseArray<Parcelable> container)

  为了防止适配器生成的视图被解冻而重写。

  参数

          container    保存有之前存储的状态信息的 SparseArray。



  protected void dispatchSaveInstanceState (SparseArray<Parcelable> container)

  为了防止适配器生成的视图被冻结而重写。

  参数

          container    保存视图状态的 SparseArray。



  protected void onLayout (boolean changed, int left, int top, int right, int bottom)

  该视图设置其子视图的大小及位置时调用。派生类可以重写此方法,并为其子类布局。

  参数

  changed     是否为视图设置了新的大小和位置。

  left 相对于父视图的左侧的位置。

  top 相对于父视图的顶部的位置。

  right    相对于父视图的右侧的位置。

  bottom 相对于父视图的底部的位置。
分享到:
评论

相关推荐

    android之listview万能适配器

    - 自定义适配器:根据实际需求,开发者可以创建自己的适配器类,实现`BaseAdapter`接口或继承`AdapterView.Adapter`。 3. **万能适配器的设计思想**: - 万能适配器通常会包含一个模板方法,允许开发者自定义每个...

    SpinnerTest使用自定义适配器

    本教程将深入探讨如何在SpinnerTest项目中使用自定义适配器,以实现更灵活的数据绑定和展示。适配器(Adapter)是Android系统中连接数据源和视图组件的关键桥梁,而BaseAdapter作为基础类,为我们提供了自定义适配器...

    android之各种Adapter加载数据

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

    Android ListView实例

    Android中的ListView通过适配器机制来绑定数据和视图,使得数据能够被渲染成用户界面。 1. **适配器(Adapter)**: - 适配器是连接ListView和数据源的桥梁。Android提供了多种内置的适配器,如ArrayAdapter、...

    ex07_list_test.rar_android_ex07_list

    在本示例中,可能使用了ArrayAdapter来绑定数据到ListView。 2. BaseAdapter:这是一个抽象类,可以自定义数据源和视图的映射,适合处理复杂的数据类型。 3. CursorAdapter:用于将SQLite数据库查询结果直接显示在...

    ListView【通用】SimpleAdapter适配器

    ListView通过适配器(Adapter)与数据源进行绑定,适配器的作用是将数据转化为ListView可以显示的视图。SimpleAdapter就是这样一个适配器,它简化了数据绑定的过程,适用于简单的数据结构,如字符串数组或者键值对...

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

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

    listview使用规则

    你需要根据数据源(如ArrayList)创建适配器,并在适配器中绑定数据到视图。 - 设置适配器:在ListView对象上调用`setAdapter()`方法,传入你创建的适配器实例。 - 配置ListView:可以通过`setOnItemClickListener...

    AdapterViewFlipper简单实例

    适配器必须实现`getCount()`方法返回数据集大小,`getItem(int position)`返回指定位置的项,以及`getView(int position, View convertView, ViewGroup parent)`方法,用于创建或复用视图并将其绑定到数据。...

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

    而Adapter则充当AdapterView与数据之间的桥梁,负责将数据转化为可显示的视图。 AdapterView的主要职责是展示数据,但自身并不直接处理数据。它依赖于适配器(Adapter)来提供数据源并决定如何呈现数据。例如,...

    ListView和SimpleAdapter的简单应用

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

    XamarinAndroidListview

    它通过适配器(Adapter)机制将数据源与视图进行绑定,从而动态生成列表项。 ### 2. AdapterView 类 `ListView` 属于 `AdapterView` 家族的一员,它们都是用来展示数据集合的控件。`AdapterView` 提供了基础架构,`...

    ArrayAdapter和SimpleAdapter使用

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

    应用源码之MySpinner.zip

    总之,通过对"MySpinner.zip"源码的学习,我们可以深入理解Android Spinner组件的工作机制,熟练运用自定义适配器、数据绑定、事件监听等技巧,从而在实际项目中打造出更加符合用户需求的下拉选择功能。同时,这也...

    android(三级联动)全国省市县下拉地址选择源码.rar

    2. Adapter:自定义适配器,用于绑定数据到Spinner。 3. 数据文件:可能是一个JSON文件,存储了全国的省市区数据。 4. 辅助类:可能包括数据解析、数据库操作等辅助功能。 通过学习这个源码,开发者可以了解如何...

    Android中使用Spinner实现下拉列表

    通过适配器机制,我们可以轻松地将数据源与Spinner绑定,同时通过监听事件和自定义布局,可以实现丰富的交互效果和个性化设计。在实际项目中,根据需求选择合适的适配器类型和定制策略,将大大提高用户体验。

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

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

    listview总结

    - **ListView的工作流程**:首先创建ListView对象,然后通过setAdapter方法设置适配器,将数据源与ListView绑定。适配器负责将数据转化为视图(View)并填充到ListView的每一项。 - **ListView的复用机制**:...

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

    3. **适配器(Adapter)**:ListView的工作是通过适配器完成的,它负责连接数据源与ListView。在Android中,常见的适配器有ArrayAdapter、SimpleAdapter等。本例中,我们使用ArrayAdapter,它适合简单的数据绑定。创建...

    Android中ListView的作用与定义.pdf

    ListView通过适配器(Adapter)机制,将数据源绑定到视图上,这样可以动态加载和更新数据,减少内存消耗,提高用户体验。 1. ListView 类的结构 ListView是ViewGroup的一个子类,它继承自AbsListView,AbsListView...

Global site tag (gtag.js) - Google Analytics