`
啸笑天
  • 浏览: 3466315 次
  • 性别: Icon_minigender_1
  • 来自: China
社区版块
存档分类
最新评论

android用户界面数据绑定

阅读更多

当我们想用合适的方式显示并操作一些数据(如数组,链表,数据库等)的时候,就需要用到适配器视图(AdapterView)。适配器视图是一组可以通过特定的适配器将适配器视图的子视图与特定数据绑定起来的控件。即其子视图由绑定某类型数据的适配器Adapter决定,AdapterView用于当你需要在布局中显示存储数据时(不是字符串或可绘制资源)。

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

AdapterView对象有两个主要责任:

·用数据填充布局

·处理用户的选择

常见的适配器有SimpleAdapter,SimpleCursorAdapter,ArrayAdapter。

 

以ListView为例子

如果要用ListActivity(也可以不继承ListActivity),则 Activity的Layout文件中必须包括一个(只能一个)ListView,且ListView的id= "@id/android:list"。即活动继承ListActivity,android就会在布局文件中查找下面两个特殊id,没有继承就可以随便定义id,没有继承的实例:http://justsee.iteye.com/blog/932591

如下代码,一个标准的ListActivity Layout文件:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent" 

android:layout_height="fill_parent"

android:paddingLeft="8dp"

android:paddingRight="8dp">

<ListView android:id="@id/android:list"

android:layout_width="fill_parent" 

android:layout_height="fill_parent"

android:background="#00FF00"

android:layout_weight="1"

android:drawSelectorOnTop="false"/>

<TextView id="@id/android:empty"

android:layout_width="fill_parent" 

android:layout_height="fill_parent"

android:background="#FF0000"

android:text="No data"/>

</LinearLayout>

请注意 ListView与TextView的id。前面说了,ListView的Id为固定不变的,为”@id/android:list”,ListActivity会根据id自动查找ListView引用;但如果当ListView中没有值而又想提示一句话时,那么用于指定显示提示信息的TextView的id 必须为”"@id/android:empty",提示的信息可以通过android:text进行指定。

 

OK,关于如何布局说完了,那么如何给List绑定值,并进行操作呢?

首先我们需要确实的是,ListView的布局也完成了,并通过调用setContentView(…)进行了绑定,但直到现在我们还没有确定ListView中的第一行显示的格式是什么,是直接显示文字还是要“图文并茂”的显示。

Android系统为我们提供了多种模板进行选择(android.R.layout),如

android.R.layout.simple_list_item_1 每项有一个TextView

android.R.layout.simple_list_item_2 每项有两个TextView

android.R.layout.simple_list_item_checked 带CheckView的项

android.R.layout.simple_list_item_multiple_choise 每项有一个TextView并可以多选

android.R.layout.simple_list_item_single_choice 每项有一个TextView,但只能进行单选。

但然,如果以上项模板还无法满足你的要求,那只能自定义模板了(相当简单,就是定义一个layout布局)。

自定义模板可以根据自己的需要定义成任意的格式,包括图片、方案及其他可显示的View,不用多说,自己定义就好了,关键是如果使用并进行模板的绑定。

 

如何要对ListView进行数据绑定,必须使用到一个接口:Adapter。

其中最经常与ListView进行配合使用的有ArrayAdapter、 SimpleCursorAdapter及SimpleAdapter等。

从名称可以看出ArrayAdapter使用的是一个ArrayAdapter做为数据源,SimpleCursorAdapter使用的是一个Cursor使用数据源,都比较容易理解,那么如何使用SimpleAdapter作为数据的适配器呢?呵呵继续学习~~~~


ArrayAdapter:

String[] data = { "Item1", "Item2","Item3", "Item4", "Item5" };

 /*构造适配器*/

listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_single_choice, data));//用的是自定义模版

 /*设置适配器*/

this.setListAdapter(adapter);

 /*设置选择事件事件监听*/

this.getListView().setOnItemSelectedListener(

                    new OnItemSelectedListener() {

                    @Override

                    public void onItemSelected(AdapterView<?> arg0, View arg1,

                            int arg2, long arg3) {

                        类名.this.setTitle(((TextView)arg1).getText());

                    }

                    @Override

                    public void onNothingSelected(AdapterView<?> arg0) {

                        类名.this.setTitle("NothingSelected");

                    }

                });

 

SimpleCursorAdapter:

//从数据库中查询Cursor

   cursor = adapter.getAllNotes();

   startManagingCursor(cursor);

   //设置要显示的数据源中的列名(需要包含在cursor中)

   String[] from = new String[] { DiaryDbAdapter.KEY_COLUMN_TITLE,DiaryDbAdapter.KEY_COLUMN_CREATEED };

   //显示的View(自定义模板中的View)

   int[] to = new int[] { R.id.txtRowTitle, R.id.txtRowCreateed };

   //绑定

   SimpleCursorAdapter notes = new SimpleCursorAdapter(this,R.layout.diaryrow, cursor, from, to);

   setListAdapter(notes);

具体实例可以参考:http://justsee.iteye.com/blog/932591

SimpleAdapter:

SimpleAdapter将一个List做为数据源,可以让ListView进行更加个性化的显示。而List中的第一项是个Map<String,?>(用到泛型),其中Map中的每项将与ListView中的每项进行一一对应绑定。Ok,看一下构造:

SimpleAdapter(Context context,List<? Extends Map<String,?>> data,int resource,String [] form, int [] to);

 Context:当前上下文,一般把Activity.this传递进行。

 Data: 数据源。

 Resource: 自定义的layout模板资源,可以用 R.layout.xxx获取引用。

 Form: 定义ListView中的每一项数据索引,索引来自于Map<String,?>,即指定要显示的内容。

 To:View数组,在ListView模板中的定义View,与Form中需要一一对应。

事例代码:

      List<Hashtable<String, Object>> listContent= new ArrayList<Hashtable<String, Object>>();

      for (int i = 0; i < deviceList.size(); i++) {

         Hashtable<String, Object> table= new Hashtable<String, Object>();

         table.put("name", deviceList.get(i).Name);

         table.put("address", deviceList.get(i).Address);

         table.put("type", deviceList.get(i).Type + "");  

         listContent.add(table);

      }

      adapter = new SimpleAdapter(HeartActivity.this,

                                listContent, 

                                R.layout.child, //自定义的layout

                                new String[] { "name", "address" },

                                new int[] {R.id.txtDeviceName, R.id.txtDeviceAddress }

                                );

      setListAdapter(adapter);

以上代码使用了Hashtable做为一个Map,并添加到一个List<Hashtable<String, Object>>当中。之后new一个SimpleAdapter,注意SimpleAdapter是如何生成的。

具体实例可以参考:http://justsee.iteye.com/blog/932591

 

  • 大小: 115.4 KB
分享到:
评论

相关推荐

    Android数据绑定DataBinding

    **Android数据绑定(DataBinding)**是Android开发中的一个强大的库,它允许开发者在XML布局文件中直接绑定UI元素和数据模型,极大地简化了视图和数据之间的交互,减少了代码的冗余,提高了应用的可维护性和可读性。...

    android数据绑定

    在Android开发中,数据绑定(Data Binding)是一个强大的框架,它允许开发者将用户界面(UI)组件与应用程序的数据模型直接连接起来,简化了代码并提高了可读性。这个框架是Google推荐的最佳实践之一,用于构建更...

    详解Android的MVVM框架 - 数据绑定

    Android MVVM 框架是 Android 应用程序中的一种软件架构模式,它使用 Model-View-ViewModel(MVVM)模式来分离业务逻辑、用户界面和数据绑定。MVVM 模式的核心思想是将业务逻辑从用户界面中分离出来,使用 ...

    Android DataBinding的官方双向绑定示例

    Android DataBinding 的官方双向绑定示例展示了如何使用双向绑定来同步数据和用户界面,并且提供了自定义双向绑定的方法。开发者可以使用这些技术来快速构建用户界面,并且减少代码量和开发时间。

    Android-ExpandableRecyclerview数据绑定实现

    而`ExpandableRecyclerView`则在此基础上增加了可折叠/展开的功能,使得用户界面更加灵活和交互性强。本篇将详细介绍如何在Android项目中实现`ExpandableRecyclerView`的数据绑定。 首先,我们要理解`...

    Android数据绑定Data Binding

    数据绑定库是Android SDK的一部分,它引入了一种声明式编程的方式来处理用户界面(UI)和应用程序数据之间的交互。传统上,我们通常通过在UI组件的set方法中设置值或者在onClick等监听器中处理事件,而数据绑定则...

    android异步远程解析json数据绑定到listview上

    总的来说,"android异步远程解析json数据绑定到ListView上"这一过程涵盖了许多Android开发的核心技术,包括异步编程、网络请求、JSON解析、数据绑定和异常处理。理解并熟练掌握这些知识点对于提升Android应用的性能...

    android+myeclipse+mysql自定义控件下拉框的数据绑定

    最后,使用ArrayAdapter或自定义的Adapter将数据绑定到自定义下拉框中,使得用户可以在界面上看到并选择。 关于MySQL,它是广泛使用的开源关系型数据库,用于存储和管理应用所需的数据。在Android中,通常不直接与...

    Android教程04-用户界面.ppt

    【Android用户界面设计详解】 Android用户界面是应用程序与用户交互的核心部分,良好的用户界面设计能够提升用户体验,增强应用的吸引力。本教程将深入探讨Android用户界面的各个方面。 首先,我们来了解一下用户...

    android的数据绑定databinding示例

    总的来说,Android的数据绑定(Data Binding)库为开发者提供了一种强大的工具,能够有效地连接数据模型和用户界面,减少了手动管理UI状态的工作,提高了代码质量。通过这个示例,你可以深入理解Data Binding的基本...

    Android 用户界面编程技巧

    ### Android 用户界面编程技巧 #### 技巧与设计模式 在Android开发中,用户界面(UI)的设计与实现是至关重要的部分。一个优秀的用户界面不仅能够提升用户体验,还能提高应用程序的性能。本文将深入探讨一些关键的...

    AndroidArchicture,使用mvvm和数据绑定的android架构.zip

    2. **双向数据绑定**:数据绑定库支持双向绑定,当用户界面的改变会自动更新ViewModel中的对应属性,反之亦然。 3. **事件绑定**:可以将点击事件等用户交互直接绑定到ViewModel的方法,减少Activity或Fragment中的...

    Android-Proteus:带数据绑定的JSONLayoutInflater

    在Android应用开发中,UI设计和布局管理是至关重要的部分。`Android-Proteus`是一个创新的库,它引入了一...通过深入学习和实践,开发者可以提高工作效率,减少代码冗余,并且能够创建出更加流畅、响应迅速的用户界面。

    javaEE android 简单界面对比

    而Android应用往往采用MVVM(Model-View-ViewModel)或MVP(Model-View-Presenter)模式,强调数据绑定和生命周期管理,以适应移动设备的特性和限制。 在性能方面,由于JavaEE运行在服务器端,硬件资源丰富,可以...

    浙大讲义:Android用户界面.rar

    这份"浙大讲义:Android用户界面.rar"压缩包包含了一份浙江大学关于Android UI设计的课程资料,主要涵盖了以下几个方面: 1. **布局(Layout)**:在Android中,布局是组织和定位UI元素的方式。常见的布局有...

    Android UI界面漂亮的天气预报源码.zip

    1. **Android用户界面(UI)设计**: - 使用Android Studio IDE:源码很可能是用Android Studio开发的,这是Google官方推荐的Android应用开发工具。 - 布局管理:可能包括LinearLayout、RelativeLayout、...

    android 分页加载数据 实例

    2. 异步处理:加载数据应在后台线程进行,以免阻塞主线程,影响用户界面的流畅性。 3. 错误处理:应处理网络错误、数据解析错误等情况,提供友好的错误提示。 4. 优化性能:使用DiffUtil来判断新旧数据的区别,仅...

    Android UI界面源码.zip

    总的来说,通过研究这份"Android UI界面源码",开发者可以学习到如何有效地设计和实现Android应用的用户界面,理解布局管理、事件处理、数据绑定等核心概念,以及如何利用Material Design原则来创建美观且易用的界面...

    Android教程04-用户界面开发

    【Android用户界面开发详解】 Android用户界面开发是构建Android应用程序的核心部分,对于初学者来说,理解和掌握这一领域至关重要。在本教程中,我们将深入探讨以下几个关键知识点: 1. **布局(Layout)**:...

Global site tag (gtag.js) - Google Analytics