Android适配器详解

USB转I2C适配器 模块 USB-IIC/GPIO/PWM/ADC 支持Android 安卓 名称:纬图Ginkgo USB-I2C适配器品牌:ViewTool/纬图型号:VTG200A 典型应用:- I2C总线设备,芯片控制、调试 - I2C接口传感器测试 - I2C存储器EEPROM数据读写 - I2C总线设备故障检测维修 - PMBus和SMBus总线接口芯片控制 - 协助开发I2C主机程序 - 脉冲计数器 - 模拟电压测量,GPIO输入输出控制 - PWM信号输出 - USB转双... 阅读详情
    Android 开发中,适配器扮演了,非常重要的角色,作为组件与数据的桥梁,我们时常会用到适配器,//思路简明扼要莫说废话,总结,常用的适配器有四种,ArrayAdapter,SimpleAdapter,与数据库操作有关的常用SimpleCursorAdapter,剩下一种就是自定义适配器,自定义适配器在前边的文章中,已经详细概述了,适配器离不开,数据源布局和上下文,其实就是将集合中数据,拆成一条条放置在布局文件中,通过适配器给容器使用
    在使用适配器的时候,我们可以自己新建布局对象,也引用系统的,常用的有,android.R.layout.simple_dropdown_item_1line,     android.R.layout.simple_spinner_dropdown_item,若数据源是文本的话可以采用这两个布局,当然你也可以自己新建一个 但是不能有外部容器,ArrayAdapter 常用语文本,而SimpleAdapter 可以实现图文混排,可以自行设置布局,和自定义适配器之间数据源不同,自定义适配器数据源可随意,simpleAdapter适配器的数据源需要是盛有map<String,Object>集合的List
    simpleCursorAdapter 适配器可以通过游标访问数据库,在使用SqLiteDataBase进行一系列的操作之后 返回值通常是Cursor ,此时可以用来构建,simpleCursor 适配器,最后将适配器给容器,(先给容器设置,最后,通过adapter.swap(simpleCursorAdapter adapter))的方式,更改数据源,此处和List 作为数据源不同,不需要,notify 操作。使用simpleCursorAdapter 适配器自定义布局时,和simpleAdapter 类似,但simpleCursorAdapter 的参数略有不同,new String[]{};数组中存放的是,你需要从数据库中查询的字段名,new int[]{},依旧是存放,自定义布局控件的id 值
    需要注意的是,simpleCursorAdapter适配器有六个参数,最后一个flags 为观察者 SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER
package com.example.loaderapp;

import android.app.Activity;

import android.app.LoaderManager.LoaderCallbacks;
import android.content.CursorLoader;
import android.content.Loader;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.ContactsContract;
import android.support.v4.widget.SimpleCursorAdapter;
import android.widget.ListView;
import android.widget.SearchView;
import android.widget.SearchView.OnQueryTextListener;

public class MainActivity extends Activity implements LoaderCallbacks<Cursor>{

    //Loader 加载
    /**
     * content resolver 在主线程中使用的
     */
    private ListView lv;

    private SimpleCursorAdapter adapter;

    private SearchView search;


    // 这个 uri 是针对 raw_contacts 和 data 两张表连接查询的  注意是 两张
    private Uri contactUri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;    

    private String[] columns = {"_id","display_name","raw_contact_id","data1"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.lv);
        search = (SearchView) findViewById(R.id.search);

        adapter = new SimpleCursorAdapter(this, R.layout.item_self,null,new String[]
                {"display_name","data1"}, new int[]{R.id.tv_name,R.id.tv_phone}, 
                SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);



        lv.setAdapter(adapter);

        //② 使用loader 加载数据  使用的 loader 的子类 CursorLoader
            //a) 让activity 或 Fragment 实现一个接口  LoaderCallbacks

        // ③得到loader 管理对象  initLoader 用于初始化 loader
        getLoaderManager().initLoader(7, null, this); // 第一个参数 就是为了 标识 这个 loader 的  第二个参数 传递的参数 没有 就写 Null


        search.setOnQueryTextListener(new OnQueryTextListener() {

            @Override
            public boolean onQueryTextSubmit(String query) {

                //输入完了 执行这个方法

                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {

                //输入的过程中执行该方法
                //参数是用户输入的文本
                // 
                Bundle args = new Bundle();
                args.putString("key",newText);

                // 重新启动 Loader 
                getLoaderManager().restartLoader(7, args, MainActivity.this);

                return false;
            }
        });


    }


    @Override
    public Loader<Cursor> onCreateLoader(int id, Bundle args) {
        // 创建Loader  Loader 和 resolver  区别 只是 一个主线程 一个子线程 他们是类似的

        String where = null;
        String[] whereArgs = null;

        if(args!=null){

            String data = args.getString("key");
            where = "display_name like ? or data1 like ?";
            //意思是 只要含有就查出来
            whereArgs = new String[]{"%"+data+"%","%"+data+"%"};

        }

        return new CursorLoader(this, contactUri, columns, where, whereArgs, null);



    }



    @Override
    public void onLoadFinished(Loader<Cursor> loader, Cursor data) {

        //loader 加载完数据执行 该方法 由主线程执行
                adapter.swapCursor(data);

    }


    @Override
    public void onLoaderReset(Loader<Cursor> loader) {
        //重置 Loader的时候执行  相当于  
        adapter.swapCursor(null);// 重新查询了 数据有变化了  重新用 loader 查询数据

    }





}
Android适配器的体系:深入解析与示例代码 主要分为三种类型:数组适配器(ArrayAdapter)、列表适配器(ListAdapter)和自定义适配器(BaseAdapter)。本文介绍了Android适配器的体系,包括数组适配器、列表适配器和自定义适配器。列表适配器是在数组适配器的基础上进行了扩展,适用于数据源为列表(List)的情况。适配器的作用是将数据源中的数据转化为UI组件能够展示的形式,同时也负责响应用户的交互操作。自定义适配器是最灵活的适配器类型,适用于数据源结构复杂、需要自定义UI的情况。)需要根据实际项目进行相应的定义和引用。 阅读详情

相关推荐

Windows 11下JDK 21与JMeter 5.6.3环境配置全攻略

环境变量是操作系统管理软件路径与执行权限的核心机制,它通过预设的键值对,指引系统在调用命令时定位可执行文件。理解其工作原理,是解决软件安装后“命令未找到”等问题的关键。对于Java生态而言,正确配置JAVA_HOME和Path变量,不仅能让java、javac等基础命令全局可用,更是Maven、Gradle乃至JMeter等众多工具链顺畅运行的基石。JMeter作为一款基于Java开发的经典性能测试与接口测试工具,其稳定运行高度依赖健全的Java环境。本文聚焦于在Windows 11系统上,为JDK 21与

weixin_30940783的博客 451

Android 基础知识4-3.11 Adapter(适配器)详解

Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。如下图直观的表达了Data、Adapter、View三者的关系::抽象类,实际开发中我们会继承这个类并且重写相关方法,用得最多的一个Adapter!:支持泛型操作,最简单的一个Adapter,只能展现一行文字~:同样具有良好扩展性的一个Adapter,可以自定义多种效果!

yyxhzdm的博客 3961

802.11 NDP Sounding

NDP Sounding1.NDP原理2.NDP 过程3.帧结构3.1 NDPA结构3.2 CBF帧 1.NDP原理 802.11n标准提供的波束成形技术,可以通过预先补偿发射天线的相位,让两条波束进行叠加以实现最好的效果 显式波束成形需要终端反馈信道信息: AP向STA发送探测数据(NDP: null data packet sounding) STA向AP反馈信道信息(Compressed beamforming) AP根据STA的反馈或自行计算的权重信息进行波束成形 2.NDP 过程 802.

weixin_45799954的博客 8263

【Android开发基础】三种常见的适配器(Adapter)

Android中常用的三种适配器。描述:适配器(Adapter)基本每个大项目里都有使用,从说说布局到操作模块布局,适配器(Adapter)一直起着至关重要的作用。 难度:初级。 知识点:适配器(Adapter)的使用。

守夜人 3641

ubuntu18.04安装gtsam过程及报错error: invalid initialization of reference of type ‘const std::vector<bool>&’

这里建议从这个链接下,不要从官网下,可能会有版本冲突 2.安装依赖 3.编译 报错: 1. error: invalid initialization of reference of type ‘const std::vector&’ from expression of type ‘const std::vector’ 124 | const std::vector& mask() const { retur...

qq_35102059的博客 2913

Excel插件开发实战:从零封装一个带自定义Ribbon的.xlam工具包

本文详细介绍了如何从零开发一个带自定义Ribbon的Excel插件.xlam工具包。通过VBA和XML技术,读者将学习到插件架构设计、Ribbon界面定制、模块化开发以及企业级部署策略,帮助提升Excel自动化办公效率。

weixin_42531128的博客 521

Android设计模式—适配器模式

1.适配器模式 ①适配器模式的定义: 把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 说到底,适配器是将两个不兼容的类融合在一起,它有点像粘合剂,将不同的东西通过一种转换使得它们能够协作起来。例如,经常碰到要在两个没有关系的类型之间进行交互,第一个解决方案是修改各自类的接口,但是如果没有源代码或者我们不愿意为了一个应用而修改各自的接口,此时怎么办?这种情况往往会使用一个Adapter,在这两种接口之间创建一个“混血儿”接口,这个Adapte

zenmela2011的专栏 3020

Rocky Linux 8.10下用cephadm快速搭建Ceph集群(附华为云镜像源配置)

本文详细介绍了在Rocky Linux 8.10操作系统上使用cephadm快速部署Ceph集群的实战指南,包括环境准备、系统配置、华为云镜像源优化、集群初始化及节点扩展等关键步骤。通过配置华为云镜像源,显著提升部署效率,适合企业级存储解决方案的需求。

weixin_30839881的博客 149

Android适配器(Adapter)的简单介绍

这个convertView, 从原理上讲 当ListView滑动的过程中 会有item被滑出屏而不再被使用,这时候Android会回收这个条目的view 这个view也就是这里的convertView ,当item1被移除屏幕的时候 我们会重新new一个View给新显示的item_new 而如果使用了这个convertView 我们其实可以复用它 这样就省去了new View的大量开销。当然,最后要return view,把这个我们包装好的View给回ListView,让它在列表里显示。

Sean_Word的博客 806

从 Classic ABAP 到 ABAP Cloud:一份面向开发者的 SAP 学习路线图与实战指南

ABAP技术演进路线:从语法到架构思维 本文系统梳理了现代ABAP开发者的能力成长路径。在S/4HANA与云时代,ABAP已从传统过程式语言转变为支持面向对象、测试驱动和云原生开发的现代技术栈。学习路线应围绕四大核心维度展开:1) 语言基础(ABAP OO/Modern ABAP);2) 工程化实践(ABAP Unit/ATC/Clean ABAP);3) 数据建模(CDS/AMDP);4) 服务化架构(Gateway/OData/Fiori)。文章强调以交付形态倒推技术栈,通过真实案例展示了如何将零散技术

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 363

Qt代码-软件商店

ui->statusBar->showMessage(QString("%1 已卸载").arg(app["name"].toString()));ui->statusBar->showMessage(QString("开始下载 %1...").arg(app["name"].toString()));QString("%1 已下载完成,是否立即安装?ui->statusBar->showMessage(QString("%1 下载完成").arg(app["name"].toString()));

寒寒豆豆软件公司的博客 112

安卓万能适配器

package com.zhongzhi.grid.adapter; import android.content.Context; import android.util.SparseArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; impor...

Half of if的博客 472

一文搞懂多速率信号处理中信号插值的本质:从插 0、插原值到线性插值!

信号插值在数字信号处理中经常被使用,但“插值”背后究竟发生了什么,却常被忽略。插0、插原值、线性插值看似只是不同的实现方式,实则对应着完全不同的频域效应与滤波特性。本文将结合公式与MATLAB仿真,深入剖析插0、插原值与线性插值三种典型策略的本质区别。

m0_66360845的博客 923

Android安卓万能适配器adpter和viewholder

在准备远离BJ之余时间干点什么了----------------------------恩----- 在开发项目中常用的adapter和viewholder轮子在此 直接用 public abstract class CommonAdapter extends android.widget.BaseAdapter { protected final Context mContext;

望浮云 981

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android的适配器作用,适配器模式安卓中的应用

安卓里面经常用到的控件Recycleview和ListView我们经常会写adapter,很直观,就是适配器的意思,关于适配器简单的例子很多,这里晚上找到的随便给一个,例子来源于这篇文章160117732.jpg代码实现如下:// 已存在的、具有特殊功能、但不符合我们既有的标准接口的类class Adaptee {public void specificRequest() {System.out....

weixin_39817347的博客 413

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

安卓适配器的简单介绍

常用适配器简单介绍

leezhiyuan的专栏 4716

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android/适配器及适配器控件

simple adapter base adapter pager adapter array adapter 适配器:在安卓中,顾名思义就是把数据变成符合界面风格的形式,并且通过ListView显示出来。也就是说适配器是数据和界面之间的桥梁。适配器在数据库中的数据(后台)和显示页面(前端)中充当一个转换器的角色,数据库中的数据(如数组,链表,数据库,集合等)通过适配器变成类手机页面能够正常显...

Y_C_C的博客 643

安卓:自定义适配器

安卓:自定义适配器 activity_main <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"

qq_52410477的博客 902

Android设计模式系列-适配器模式,大厂安卓面试真题精选

适配器模式分为类适配器模式和对象适配器模式。 关于类适配器模式,因为java的单继承,如果继承一个类,另外的则只能是接口,需要手动实现相应的方法。 热门词汇:类的适配器模式对象的适配器模式缺省适配器模式 源类 目标接口 2.结构图和代码 为了简明直接,我省略了相关的其他适配器,只以此两个适配器为例。 ListViews做为client,他所需要的目标接口(targetinterface)就是ListAdapter,包含getCount(),getItem(),getView()等几个基本的方法,为了兼容L

m0_66264630的博客 714

安卓开发系列 之适配器模式

安卓开发中对于数据源有两种填充模式: 对于固定数据:如strings.xml中的string-array,使用android:entries填充; 对于动态数据:Java数组或者database,使用adapter填充。 适配器设计模式: 通常接口中有许多方法,程序不一定用到所有方法,但是在使用implements实现接口时必须重写所有的方法;适配器就是一个类,简化了以上操作,实现了监听器接口并重写了所有方法,只是所有的方法都是空的。适配器需要定义成抽象类,因为如果直接用它创建对象调用空方法没有意义,优势是

langxiaolin的博客 591

android适配器定义在哪,Android适配器

一.适配器适配器是AdapterView视图(如ListView - 列表视图控件、Gallery - 缩略图浏览器控件、GridView - 网格控件、Spinner - 下拉列表控件、AutoCompleteTextView - 自动提示文本框、ExpandableListView - 支持展开/收缩功能的列表控件等)与数据之间的桥梁,用来处理数据并将数据绑定到AdapterView上。这也是...

weixin_35411443的博客 615

android的适配器作用,适配器在Android中的作用是什么?

适配器在Android中的作用是什么?我想知道在Android环境中何时,何地以及如何使用适配器。来自Android开发者文档的信息对我来说不够,我希望得到更详细的分析。11个解决方案39 votesAndroid中的适配器基本上是UI组件和将数据填充到UI组件的数据源之间的桥梁例如,通过使用数据源数组中的列表适配器来填充列表(UI组件)。success_anil answered 2019-06...

weixin_32413177的博客 4722

安卓的适配器Adapter

最近在学习安卓,学到ListView这个控件,发现这个控件在调用方面用到了很多适配器。比如说ArrayAdapter,它们之间数据的传输是通过适配器来匹配的,说的具体一点就是适配器是把数据显示到View上的桥梁。 这部分对我来说很难理解,我按照我的思路把对适配器的理解写下来,可能有些以偏概全。什么是适配器?从Adapter的字面意思就能理解,是一个用来匹配适应的东西。ListView通过adapt

马伯恩的博客 399

24. 【Android教程】适配器 Adapter

本节将会引入一个全新的概念——适配器,这个名字很形象,和电源适配器的功能类似,从程序设计的角度出发,它可以将不同类型、不同结构的数据适配到一起。在 Android 中,适配器是 UI 组件和数据之间的桥梁,。我们可以分别编写独立的 UI 样式和数据模型,至于数据如何与 UI 组件绑定都由 Adapter 帮我们完成,这样的好处就是做到 UI 和数据的解耦。Android 系统为我们提供了多种 Adapter,今天就来介绍几种常见同场景下 Adapter 的基本用法。

这是一个web全栈开发的博客,取其精华去其糟粕,争取让大家一看就懂,一学就会,一用就成~ 3413
上一篇: Android ContentResolver 优化方案之 loader
下一篇: Head First Design pattern Observer
一朵红杏
博客等级 码龄12年 51粉丝 282原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值