`
倒打一耙
  • 浏览: 888 次
  • 性别: Icon_minigender_1
  • 来自: 西安
最近访客 更多访客>>
社区版块
存档分类
最新评论

Adapter代码分析

阅读更多

     adapter在android中相当于连接View与其显示内容之间的桥梁,感觉用映射来形容应该还是比较贴切的,他将内容映射到View应该显示的地方,从而使代码更加简单可观。不多说,现将从网上看到的一些代码的理解记录下来,留待后用。

     以View中的spinner和adapter为例。首先在 String.xml中声明一个表示颜色的数组

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">MainHelloSpinner</string>
    <string name="color">选择色彩:</string>
    <string-array name="colors">
        <item>黑色 | Black</item>
        <item>蓝色 | Blue</item>
        <item>棕色 | Brown</item>
        <item>绿色 | Green</item>
        <item>灰色 | Grey</item>
        <item>粉色 | Pink</item>
        <item>紫色 | Purple</item>
        <item>红色 | Red</item>
        <item>白色 | White</item>
        <item>黄色 | Yellow</item>
    </string-array>
</resources>

    这些内容将会显示在spinner的下拉栏里面。当然,我们需要在main.xml中创建我们所需要的spinner,这样我们才能将他们联系起来,否则空有数组而无处显示。当所有一切都建妥这是我们可以看到自动更新的R.java中显示的内容为:

public final class R {
    public static final class array {
        public static final int colors=0x7f050000;
    }
    public static final class attr {
    }
    public static final class drawable {
        public static final int icon=0x7f020000;
    }
    public static final class id {
        public static final int spinner=0x7f060000;
    }
    public static final class layout {
        public static final int main=0x7f030000;
    }
    public static final class string {
        public static final int app_name=0x7f040000;
        public static final int color=0x7f040001;
    }
}

之后我们在我们的Activity中找到我们需要的spinner,然后

 //准备一个数组适配器
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
                this, R.array.colors, android.R.layout.simple_spinner_item);
        //设置下拉样式
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        //为下拉列表设置适配器
        spinner.setAdapter(adapter);

        //定义子元素选择监听器
        OnItemSelectedListener oisl=  new OnItemSelectedListener() {

            @Override
            public void onItemSelected(AdapterView<?> parent, View view,
                    int position, long id) {
                  Toast.makeText(MainHelloSpinner.this,"选择的色彩: " +
                  parent.getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
               
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {           
            }
        };
        //为下拉列表绑定事件监听器
        spinner.setOnItemSelectedListener(oisl);
    }

在这里我们可以发现,对比spinner的定义

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:prompt="@string/color"
    />

spinner中显示的内容完全不需要在spinner定义,而只需通过adapter来完成,当然,这样说不确切,应该说由它所对应的数组来完成。至于adapter中所用方法的一些细节,如每一个函数作用,每一个函数参数含义,还需要继续研修。下次继续

分享到:
评论

相关推荐

    adapter_C++_adapter_源码

    在"adapter_C++_adapter_源码"这个项目中,我们可以预期包含一个C++实现的适配器模式的源代码文件。通常,适配器模式有两种形式:类适配器和对象适配器。类适配器模式通过继承来实现,而对象适配器模式则通过组合来...

    eclipse Adapter源码

    以下是对Eclipse Adapter机制的详细解析: 1. **适配器模式**: 在软件工程中,适配器模式是一种设计模式,它允许两个不兼容的接口之间进行通信。Eclipse的Adapter模式主要是将模型对象(Model)转换为视图对象...

    canal.adapter-1.1.6.zip

    【压缩包子文件的文件名称列表】: canal.adapter-1.1.6.tar.gz 表明压缩包内可能包含源码、配置文件、文档、依赖库等,用于解压后构建、安装和运行Canal适配器1.1.6版本。 **详细知识点:** 1. **Canal组件**:...

    ArrayList动态删除 自定义Adapter (附源码)

    本文将深入探讨如何在ListView中实现动态删除功能,并提供相关的源码解析。 首先,ArrayList是一个动态数组,允许我们在运行时添加、删除和修改元素。在ListView中,我们通常使用自定义Adapter来连接数据源(如...

    Android应用源码之AdapterDemo.zip

    这个"AdapterDemo.zip"应该包含了实现上述功能的源代码,通过阅读和分析这个示例,开发者可以更好地理解和掌握如何在实际项目中有效地使用Adapter。无论你是初学者还是有经验的开发者,这个示例都能为你提供有价值的...

    RecycleView通用的Adapter适配器

    本文将深入探讨`RecyclerView`中的通用`Adapter`适配器,并通过实例代码进行解析。 `RecyclerView.Adapter`是`RecyclerView`的数据绑定机制,它负责创建和管理`ViewHolder`对象,以及根据数据集填充这些`ViewHolder...

    Android支持DataBinding的RecyclerView通用Adapter

    在Android开发中,`RecyclerView` 是一个非常重要的组件,它用于展示可滚动的列表或网格视图,提供了高效的...在实际项目中,这种Adapter的使用可以显著提升开发效率,减少代码量,同时保持代码的可读性和可维护性。

    前端项目-webrtc-adapter.zip

    "adapter-master"通常代表这是项目的主分支或者源码仓库,可能是从GitHub等代码托管平台下载的。"master"分支通常是开发的主要分支,包含了项目最新的稳定版本。 **知识点详细说明:** 1. **WebRTC技术**:WebRTC...

    canal.adapter-1.1.4.tar.gz

    在Canal Adapter 1.1.4中,我们深入分析了原有代码,找到了导致删除和更新操作出错的根源。通过对源码的精细调整,现在Canal Adapter能够正确处理这些操作,确保数据的一致性和完整性。无论是DML(Data ...

    自定义Adapter适应ListView和GridView

    本文将深入解析如何根据CSDN鸿洋大神的博客,自定义一个通用的Adapter,以满足不同场景下的ListView和GridView的适配器需求。 首先,理解Adapter的作用。Adapter是Android中的一个接口,它是连接数据源(如...

    扩展 WebSphere JDBC Adapter 标准入站服务

    同时,集成监控工具,如 IBM Tivoli Monitoring 或其他日志分析工具,以便实时跟踪服务性能和故障。 总的来说,扩展 WebSphere JDBC Adapter 标准入站服务是一个涉及多个层面的过程,包括但不限于业务逻辑扩展、...

    canal-1.1.5(deployer和adapter)

    - Adapter:Canal Adapter是连接Canal Server和目标系统的桥梁,它将Canal Server解析出的binlog事件转换为目标系统能够理解的数据格式,实现数据同步。 2. **部署Canal Deployer** Canal Deployer是Canal的部署...

    设计模式原代码 ADAPTER

    在标题提到的 "设计模式原代码 ADAPTER" 中,我们可以推断这是提供了适配器模式的具体实现代码。适配器模式通常包括以下几个关键角色: 1. **目标接口(Target)**:这是客户希望调用的接口,定义了客户所需要的...

    Using the ant javac adapter

    `org.eclipse.jdt.core`是Eclipse的核心Java开发组件,负责解析、编译和索引Java源代码;`org.eclipse.jdt.core_3.6.2.v_A76_R36x.jar`和`org.eclipse.jdt.core_3.5.2.v_981_R35x.jar`可能是不同版本的这个组件,...

    RecycleView万能Adapter

    在Android开发中,RecyclerView是一个非常重要的组件,它用于展示可滚动的列表数据,极大地提高了应用的性能和用户体验。...分析和学习这个实现可以帮助我们更好地理解和运用万能Adapter,提升Android应用的开发效率。

    Bluez协议栈文档代码解析

    在后续的源码分析中,可以更深入地研究`setup_signalfd()`、`connect_dbus()`和`adapter_init()`等关键函数,以及它们如何与`gdbus`、`libbluetooth`和`gobex`等组件协同工作,来实现蓝牙设备的发现、连接、数据传输...

    C++设计模式代码资源16_Adapter.zip

    《C++设计模式:Adapter模式解析与应用》 在软件工程中,设计模式是一种解决常见问题的可重用解决方案,它代表了最佳实践,并已被广泛接受。Adapter模式,也称为适配器模式,是设计模式中的一种,它允许两个不兼容...

    前端项目-ember-data-django-rest-adapter.zip

    ember-data-django-rest-adapter-master 这是压缩包中的主要目录,暗示了源代码和其他相关文件都在这个目录下。"master"通常指的是项目的主要或默认分支,意味着这是项目的核心代码库。 **知识点详解:** 1. **...

Global site tag (gtag.js) - Google Analytics