通用Adapter的尝试

从分割一切到跟踪一切:MASA如何用自监督与Adapter解锁通用目标跟踪 本文探讨了MASA模型如何通过自监督学习和轻量级Adapter技术实现通用目标跟踪,从分割一切到跟踪一切的技术跃迁。该模型利用SAM作为基础模型,通过几何变换和像素对应生成自监督信号,显著提升了多目标跟踪的跨域性能。CVPR2024的研究成果展示了其在无人机和监控场景中的卓越表现,为计算机视觉领域带来了新的突破。 阅读详情


转载请标明出处:http://blog.youkuaiyun.com/lmj623565791/article/details/38902805 ,本文出自【张鸿洋的博客】

注:本文内容基本基于鸿洋大神的博客,地址在上面,可以自行阅读。

1.通用Adapter(针对ListView,GridView)

由于作者水平有限,参考大神的博客,自己试着写了写,目前运用在listview和gridview中,对于recycleView和Viewpager的兼容还是不行的,不过大神博客里上传到Git上的那个版本是支持recycleview的,至于viewpager,个人观点,应该可以整合到一起,就会变成一个全通用的Adapter了。之所以这么说是因为之前尝试过一次,公用一个adapter,实现baseadapter,继承pageradapter,所有需要重写的方法都重写,当时只能过做到简单的显示,后来就放在一边就没继续研究,之后有时间会尝试写一写。

2.代码

具体的内容大神的博客里已经将的很详细了,而且对于经常写adapter的人来说阅读起来并不费劲,我就把我自己写过的总体贴一下,有问题欢迎指出。

public class ViewHolder extends RecyclerView.ViewHolder{
private final SparseArray<View> mViews;
private View mConvertView;
private int mPosition;
private int mlayoutId;
private Context mContext;
private ViewHolder(Context context,View itemView,ViewGroup parent,int position){
	super(itemView);
	mContext=context;
	mConvertView=itemView;
	mPosition=position;
	mViews=new SparseArray<View>();
	mConvertView.setTag(this); 
}
//获得ViweHolder对象
public static ViewHolder get(Context context,View convertView,ViewGroup parent,int layoutID,int position){
	if(convertView==null){
		View itemView=LayoutInflater.from(context).inflate(layoutID, parent,false);
		ViewHolder viewHolder = new ViewHolder(context, itemView, parent, position);
		viewHolder.mlayoutId=layoutID;
		return viewHolder;
	}else{
		ViewHolder holder = (ViewHolder) convertView.getTag();
		holder.mPosition=position;
		return holder;
	}
}
public <T extends View> T getView(int viewId){
	View view=mViews.get(viewId);
	if(view==null){
		view=mConvertView.findViewById(viewId);
		mViews.put(viewId, view);
	}
	return (T)view;
}
public View getConvertView(){
	return mConvertView;
}
//设置各种辅助方法
public ViewHolder setText(int viewId,String text){
	TextView view=getView(viewId);
	view.setText(text);
	return this;
}
public ViewHolder setImageResource(int viewId,int drawableId){
	ImageView view=getView(viewId);
	view.setImageResource(drawableId);
	return this;
}
public ViewHolder setImageBitmap(int viewId,Bitmap bitmap){
	ImageView view=getView(viewId);
	view.setImageBitmap(bitmap);
	return this;
}
}
这次代码中基本没有注释,因为并不难,我写的是参照大神在git上的最新的支持recycleview的版本的,可能跟大神博客里的有些不一样,不过基本上原理是一样的。

关于写通用的adapter总结看来主要是针对这几方面:

1.继承basedapter,把一些常用的,基本没有改变的东西都先写好。主要的技巧就是用到了一个泛型,解决了list集合中不同对象的困扰。

2.ViewHolder的写法,大神的博客中也说得很详细了,利用一个SparseArray来保存view对象,SparseArray大家可以把它看做是一个Map,只不过key只能是integer,实际上那SparseArray底层的实现方式是双数组,跟我们平时遇到的都有点不一样,它是一个数组存放key,一个数组存放Value。贴一下源码。

<span style="font-size:18px;">public class SparseArray<E> implements Cloneable {
    private static final Object DELETED = new Object();
    private boolean mGarbage = false;

    private int[] mKeys;
    private Object[] mValues;
    private int mSize;

    /**
     * Creates a new SparseArray containing no mappings.
     */
    public SparseArray() {
        this(10);
    }

    /**
     * Creates a new SparseArray containing no mappings that will not
     * require any additional memory allocation to store the specified
     * number of mappings.
     */
    public SparseArray(int initialCapacity) {
        initialCapacity = ArrayUtils.idealIntArraySize(initialCapacity);

        mKeys = new int[initialCapacity];
        mValues = new Object[initialCapacity];
        mSize = 0;
    }</span>
可以看出来,是双数组结构,这样更便于查找,至于其他的增删改查方面的大家可以自行去看一下,个人感觉跟arraylist的实现差不多。

3.ViewHolder中对于各种控件属性的赋值方法,个人感觉能够想到这一点的人真是太聪明了,真不知道最开始是怎么想到的。在ViewHolder中封装了大部分常用控件的设置方法,这样真的就是把adapter精简到极致了,写一个adapter只需要一句话。

4.viewholder中对于监听器的设置,这是在大神发在git上的最新的holder中看到的,封装了三个常用的ontouch,onclick,onlongclick方法,可以直接调用。

5.在大神的文档中还有这样的两个东西MultiItemCommonAdapter和MultiItemTypeSupport,这个是用来处理不同itemType的时候使用的,最常见的就是聊天界面左右不同的item了。大家可以自行参考。

3.总结

记得第一次看大神这个文章的时候感觉,**,居然还可以这样?再一看是2014年的文章。顿时感觉自己要努力的地方还有很多啊!准备下一篇写一写关于RecycleView的文章,看到大家现在都用这个,准备研究研究,对于CommonAdapter,个人感觉能简化的就这么多了,也会尝试一下和pageradapter整合,不过现在都是viewpager结合fragment用,适配器也采用的是FragmentPageAdapter,这个整合难度有点大,不过个人认为是可行了,因为需要的方法是不同的,也不相互干扰,应该没问题。还是贴一下CommonAdapter的代码吧。自己也再看一遍。嗯嗯。

public  abstract class CommonAdapter<T> extends BaseAdapter{
protected LayoutInflater mInflater;
protected Context mContext;
protected List<T> mDatas;
protected int layoutID;
public CommonAdapter(Context context,List<T> mDatas,int layoutID){
	mInflater=LayoutInflater.from(context);
	this.mContext=context;
	this.mDatas=mDatas;
	this.layoutID=layoutID;
}
	@Override
	public int getCount() {
		return mDatas.size();
	}

	@Override
	public T getItem(int position) {
		// TODO Auto-generated method stub
		return mDatas.get(position);
	}

	@Override
	public long getItemId(int position) {
		// TODO Auto-generated method stub
		return position;
	}

	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		ViewHolder viewHolder=ViewHolder.get(mContext, convertView, parent, layoutID, position);
		convert(viewHolder,getItem(position));
		return viewHolder.getConvertView();
	}
	public abstract void convert(ViewHolder viewHolder, T item) ;
		
}

基本上就是常用的方法,不同的就是泛型和getView(),并不难。

文尾附上大神的项目,发表在Git上的,有兴趣的可以下下来看看,或者留邮箱。关于recycleView,百度recycleview jar 包,有很多。(刚试了下自己写的,炸了,一直在报NoClassDefFounfError 错误,不报错误就是一直在deBug,啊啊啊,要命了。)刚尝试下 去掉RecycleView的继承关系就可以了。看来recycleview使用还是有很多需要学的啊。

添加了多种Item类型的支持,源码地址:https://github.com/hongyangAndroid/base-adapter .


VLA模型(具身智能入门十) Vision Language Action(VLA)模型VLA模型是机器人领域的“感知-理解-执行”一体化框架,通过Transformer架构融合视觉、语言、动作模态,核心目标是让机器人在自然语言驱动下,自主完成复杂操控任务。其定义的核心在于“跨模态统一”与“具象化行动”——不仅能“看懂”“听懂”,更能“做出正确的动作”,是实现通用机器人智能的关键方向。提供通用序列建模骨架,让视觉、语言、动作能以“序列”形式统一处理;ViT将视觉输入转换为序列特征,提供“看”的能力;LLMs。 阅读详情

相关推荐

ESP8266红外控制美的空调:从协议解析到Home Assistant集成

红外遥控技术作为一种经典的非接触式控制方式,其原理是通过红外发光二极管发射经过特定频率调制的光信号来传递指令。在物联网和智能家居领域,利用微控制器如ESP8266模拟红外信号,成为将传统家电接入智能生态系统的关键技术。这项技术通过精准解析和生成符合设备厂商私有协议的红外编码,实现了对空调、电视等设备的远程与自动化控制,具有很高的实用价值。本文聚焦于美的空调的红外协议,深入探讨了其脉冲宽度调制(PWM)和全量式编码的特点,并提供了基于ESP8266的完整解决方案,包括硬件连接、库函数API详解以及如何将其无缝

weixin_30718391的博客 402

张鸿洋 博客

张鸿洋 优快云认证专家,2014博客之星.鸿洋老师精通Java企业级开发,对基于Java的Web框架有一定的认知。而且还在csdn上撰写了”Android 精彩案例”一系列博文。 http://blog.youkuaiyun.com/lmj623565791   https://github.com/hongyangAndroid...

weixin_33763244的博客 2275

【新华三】通过路由复制实现Public与VRF路由互通

如上图所示,S6900设备里有两张表,一张是public路由表,默认所有的路由都存放在public路由表里;除此之外还创建了VRF test,因此此设备还有VRF test路由表。通过路由复制实现Public路由和VRF路由互通,默认情况下VRF里的路由单独一张路由表,默认情况下与public路由表相互隔离,两张表之间不可互访。此时的public路由表里面并没有test的路由表。public路由表与VRF路由表之间相互隔离。此时VRF test里的路由也没有其他VRF或Public里的路由,相互隔离。

五大连池的镜子 5279

NoCassDefFoundError原因分析

因为需要用到了外部jar中的Class,却在使用时遇到了NoClassDefFoundError,不过最终解决了,留下一个笔记供以后参考。 首先分析一下ClassNoDefFoundError异常,平时熟知的是ClassNotFoundException。ClassNotFoundExcept...

chuleng2697的博客 1005

OPTISYSTEM实战指南:线性调频连续波激光雷达系统仿真设计

本文提供了一份基于OPTISYSTEM软件的线性调频连续波激光雷达系统仿真实战指南。文章详细阐述了从软件界面熟悉、核心参数设置,到发射端、信道模型、相干接收端完整系统搭建的全过程,并介绍了性能优化与高级仿真技巧,旨在帮助读者快速掌握利用OPTISYSTEM进行低成本、高效率激光雷达系统设计与验证的方法。

weixin_29288313的博客 297

深入LSM6DSL的FIFO连续模式:基于STM32和MEMS库的数据流高效处理指南

本文深入探讨了LSM6DSL的FIFO连续模式,结合STM32硬件平台和ST官方MEMS库,提供了高效的数据流处理方案。通过优化I2C通信时序、中断驱动设计以及动态ODR调整,实现低功耗数据采集与处理,显著提升嵌入式传感器应用的性能和续航能力。

weixin_30387799的博客 349

怎么解决java.lang.NoClassDefFoundError错误

前言在日常Java开发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类明明还在,为什么找不到?而且我们很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的。我们往往花费时间去不断尝试

jamesjxin的专栏 123万+

最全的Hermes安装教程以及Hermes WebUI安装部署和配置指南

* 直接执行命令**

小石头的专栏 1074

Java类加载失败异常:NoClassDefFoundError与ClassNotFoundException

一、NoClassDefFoundError:运行时加载不到类 在运行时,需要使用该类时,如调用该类的静态static方法或者创建该类的对象,无法从类路径加载该类而发生错误。无法加载可能类路径和mavne仓库确实是没有这个类,或者该类对当前的类加载器不可见,如tomcat容器中的不同应用使用不同类加载器。 出现场景: 常出现在:当通过手动安装某个第三方jar包,假如为A包,而A包又引用了另外一个...

源码之下,了无秘密 9622

C# Blazor Server工业监控Web UI:实时数据推送、历史曲线、报警记录,跨浏览器访问(踩坑总结+生产可用)

坑点现象解决方案StateHasChanged()太频繁服务器CPU占用高,浏览器卡顿别100ms刷新一次,1秒刷新一次足够并发高时服务器卡多个用户同时访问,服务器响应慢用Redis做分布式缓存,或者加服务器做负载均衡断线重连后数据丢失浏览器刷新后,实时数据不更新用InfluxDB存历史数据,刷新后重新查询工业现场网络不稳定Blazor Server频繁断线用SQLite本地缓存,断网时数据不丢,联网后补发历史曲线查询慢查询过去7天的数据,要等很久。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 305

Vue3 - Element Plus 组件库 Tabs 标签页右侧区域插入按钮,<el-tabs> / <el-tab-pane> 选项卡组件右侧自定义插槽内容教程(右边区域添加自定义按钮功能区)

vue3,elementplus,tabs选项卡如何在插槽按钮,tabs标签页组件怎么自定义右侧内容,vue3elementplustabs组件右侧插槽按钮,element-plus在el-tabs组件的最右侧添加按钮,如何在选项卡右边加入按钮搜索框等内容,哪个属性能在tab选项卡右侧插入自定义按钮,在el-tabs组件最右侧添加按钮,vue3el-tabs组件怎么自定义右侧插槽内容,Tabs标签页右侧自定义插槽,ElementPlusTab右边加按钮,el-tabs组件自定义右侧按钮,在E

🏆 前端领域优质创作者 7017

为RecyclerView打造通用Adapter 让RecyclerView更加好用

转载请标明出处: http://blog.youkuaiyun.com/lmj623565791/article/details/47251585; 本文出自:【张鸿洋的博客】 一、概述 记得好久以前针对ListView类控件写过一篇打造万能的ListView GridView 适配器,如今RecyclerView异军突起,其Adapter的用法也与ListView类似,那么我们也可以...

dawuafang 991

MAC-电脑中的user文件夹在哪?

MAC-电脑中的user文件夹在哪?

兴趣是最好的老师 1万+

通用Adapter的尝试《第二篇》

经过昨天一天的尝试与上午的一些努力,通用的adapter终于是可以用了。没有继承RecycleView,直接写就可以 上午主要对上一篇文章中没有进行介绍的MultiItemCommonAdapter和MultiItemTypeSupport研究了一下,写一篇博客总结一下。 先看一下这两张图,这其中使用的就是ListView(先用ListView,recycle我还不会。。。。)

一生中至少要有两次奋不顾身。一次为爱情,一次为梦想。 632

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

通用RecyclerViewAdapter---ZMRecyclerViewAdapter开源

写在前面 这个开源项目早就写了,但是最近闲下来整理了一下,总的来说,这是一个能够替换RecyclerViewAdapter的开源控件,能够实现少数几行代码就丰富RecycelrView的表现。封装的非常巧妙,调用极少的函数。 ZMRecyclerViewAdapter 项目地址 ZMRecyclerViewAdaper Gradle集成方法 //build.gradle allproj...

yourzeromax的博客 408

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

使用Kotlin封装RecycleView和重构

今天,是对RecycleView.Adapter进行封装,形成通用的Apapter;RecycleView概念和用途,以为为什么要用RecycleView而不用Listview,这些我就不重复了,一搜一大把,写的都比我好,理解的也比我深入,这里,我要实现的就是使用Kotlin实现通用Adapter;为什么要实现通用Adapter,无非是我们的项目中,会出现各式各样的List展示,于是乎,就出现了无...

Fly0078的博客 955

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

通用的adapter

http://www.eoeandroid.com/thread-326973-1-1.html 还没试,不知道到底能不能用,希望可以用 最讨厌写adapter的了

findsafety的专栏 491

尝试编写一个不需要记忆的工具(以RecyclerView的Adapter为例)

过去开发Android的时候,是一个非常常用的类,但是却用起来有些麻烦,于是就根据需要写了很多XXXAdapter之类的工具,也有很多开源可用的Adapter工具。如果只用一个,养成习惯后不成问题,但是如果比较多,就容易忘记或记错混淆。于是就有了一个想法:我能不能写一个不需要去记忆的工具,即便很长时间没用忘记了,也可以直接上手用。本文以为例,来分享我的思考和实现方式。

乐征skyline 812

Android中adapter详解

Android Adapter Adapter是用来帮助填充数据的中间桥梁,比如通过它将数据填充到ListView, GridView, Gallery.而android 提供了几种Adapter:ArrayAdapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapte

白马笑西风的专栏 2268

Adapter报错:The content of the adapter has changed

Adapter报错:The content of the adapter has changed

Working harder, getting stronger! 1万+

【模型介绍】这个可以让你玩出花儿来的模型:IP-Adapter_ip-adapter模型

【1】模型介绍在IP-Adapter刚发布阶段,就分支持SD1.5和SDXL两个版本的预处理器和对应的模型,大家在调用预处理器和模型的时候要注意与基础模型都要匹配好。陆续有相关的模型推出,特别是针对脸部处理的IP-Adapter模型,这就为我们进行参考图的人脸进行更完整地契合提供了更多可能。到现阶段为止,尤其是SDXL版本的,有2个预处理器和对应的4个模型,在使用上注意预处理器与模型的匹配,带“plus”的预处理器,就需要调用同样带“plus”的模型来使用。

阿道夫的博客 2006

DataBInding封装Adapter

我们先来总结一下目前Android开发中通过RecyclerView列表的几种常见实现方式。 1.直接使用原生RecyclerView提供的API,自己实现RecyclerView的Adapter和ViewHolder。 2.使用网上比较火的三方库,类似一行代码实现上拉加载更多,下拉刷新,xxx,xxx的RecyclerViewAdapter;或者个人开发者基于此类,再度封装的BaseAdapter。 3.使用Databinding,写一个一劳永逸的Adapter,从此告别Adapter的多次实现。

你全家都是博客 2136

【转】Adapter应用总结

Adapter应用总结 首先来看一下Adapter的体系结构:     一个Adapter的对象扮演一个桥梁的角色。这个桥梁连接着一个AdapterView和它所包含的数据。Adapter提供了一个通到数据项的途径。Adapter还负责为在数据集里的每个数据生项生成一个View。它有一个重要的方法:public abstract View getView (int position...

zbryan的专栏 566

【论文阅读】FedWiper: Federated unlearning via universal adapter

实现了精确遗忘 (Exact Unlearning)与许多追求近似遗忘的方法不同,FedWiper 的目标是彻底移除被遗忘数据的影响,使其模型状态与从未见过该数据时训练的模型等价。这提供了目前理论上最强的隐私保证。显著提升了精确遗忘的效率相比于“黄金标准”的从头重训练 (RfS),FedWiper 通过“分而治之”(子模型)和 Uni-Adapter 机制,大大减少了遗忘操作所需的时间和计算资源。实验表明其速度可以有数倍的提升。降低了通信成本。

wzx_442011334的博客 1055

adapter刷新时需要在主线程之中记录

结论:adapter的notifychange需要在主线程之中,可以使用runonuithread方法切换线程   mpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 01-08 20:29:18.785 27036 272...

HAPP NEW JAVA 1082

CushyStudio高级功能探索:IP Adapter与ControlNet结合使用的终极教程

CushyStudio作为一款强大的AI生成艺术平台,提供了丰富的工具和功能帮助创作者实现各种创意。其中,IP Adapter和ControlNet是两个非常实用的高级功能,它们的结合使用能够让你的AI绘画作品更加精准和富有创意。本文将详细介绍如何在CushyStudio中结合使用IP Adapter和ControlNet,帮助你快速掌握这一高级技巧。 ## 什么是IP Adapter和Cont

gitblog_00379的博客 970
上一篇: ViewPager的过渡动画
下一篇: 通用Adapter的尝试《第二篇》
hbl_for_android
博客等级 码龄11年 30粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值