首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有时,当我从recylerview中移除一个对象时,getItemViewType中的位置(int位置)是-1

在RecyclerView中,当从列表中移除一个对象时,getItemViewType方法中的位置参数(int位置)为-1的情况可能是由以下原因引起的:

  1. 数据源不一致:在移除对象之前,可能没有正确更新数据源。getItemViewType方法根据位置参数来确定特定位置的视图类型,如果数据源没有正确更新,位置参数可能会超出有效范围,导致返回-1。

解决方法:在移除对象之前,确保及时更新数据源,保持数据源与RecyclerView的一致性。

  1. 错误的索引操作:在移除对象时,可能使用了错误的索引操作。例如,使用了错误的索引值或者将对象从错误的位置移除。

解决方法:仔细检查移除对象的代码,确保使用正确的索引操作。

  1. 适配器未正确实现getItemViewType方法:getItemViewType方法是RecyclerView.Adapter的一个重要方法,用于确定特定位置的视图类型。如果适配器未正确实现该方法,可能会导致位置参数为-1。

解决方法:确保适配器正确实现getItemViewType方法,并根据实际需求返回正确的视图类型。

总结:当从RecyclerView中移除一个对象时,getItemViewType方法中的位置参数为-1可能是由数据源不一致、错误的索引操作或适配器未正确实现getItemViewType方法等原因引起的。解决方法包括及时更新数据源、使用正确的索引操作以及确保适配器正确实现getItemViewType方法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java实现给定一个链表,判断链表是否有环。 为了表示给定链表环,我们使用整数 pos 来表示链表尾连接到链表位置(索引 0 开始)。 如果 pos -1,则在该链表没有环。

By 张旭 CaesarChang 合作 : root121toor@gmail.com 关注我 带你看更多好技术知识和面试题 给定一个链表,判断链表是否有环。...为了表示给定链表环,我们使用整数 pos 来表示链表尾连接到链表位置(索引 0 开始)。 如果 pos -1,则在该链表没有环。...* class ListNode { * int val; * ListNode next; * ListNode(int x) { * val =...=fast.next.next; slow=slow.next; } return false; } } 使用快慢指针,刚开始快比慢快1,...然后快走2 慢走1, 总会碰到.

86420

使用 ConcatAdapter 顺序连接其他 Adapter

这方面的一个用例,在列表头部和底部显示加载状态: 当列表网络检索数据,我们想显示一个加载图标;如果出现错误,我们要显示错误信息和重试按钮。...要获得完整实现,请查看这里 拉取请求,它添加了:  ViewModel 暴露出来 LoadState 显示加载状态头部和底部布局 头部和底部 ViewHolder 对象 一个 ListAdapter...,它基于 LoadState 显示 1 或 0 个项目,每次 LoadState 有变动时候,我们会通知相应条目进行改动、插入或移除 (您可以在 拉取请求 查看相应代码)。...我们可以在构造 ConcatAdapter 使用一个 ConcatAdapter.Config 对象来实现这样效果。...数据变更通知 当 ConcatAdapter 一个 Adapter 调用了通知函数,ConcatAdapter 会在更新 RecyclerView 之前计算新项目位置

54220

实习入职第二十天:setRecyclerListener看listView回收机制

获取mActiveViews中指定位置view,如果找到会将该viewmActiveViews移除。...第三种情况,这个最简单: 一开始,listview稳定后,显示N个,此时mScrapView没有缓存view当我们向上滚动一小段距离(第一个此时仍显示部分),新view将会显示,此时listview...item view,此时,系统会mScrapView找position对应View,显然,找不到,则将从mScrapView,取最后一个缓存view传递给convertView;         ...注释看,不可见item 自动移除在scrollListItemsBy中进行。...RecycleBin相当于一个临时存储不需要显示那部分Views对象,随着列表滑动,这些Views需要显示出来时候,他们就被RecycleBin拿了出来,RecycleBin本身并不对mScrapViews

93010

Adapter分组封装

支持局部插入刷新,局部移除刷新,也就是说可以按组插入或者移除数据,或者按组child某个未知插入或者移除数据。 支持组header,footer,child各个视图view自定义点击事件。...有时候,在分组控件,有的组不想显示header,有的组不想显示footer,那么这个时候就不太灵活。能否使用一个开关方法来控制header和footer显示和隐藏呢?...4.4 分组实体bean 通过GroupStructure记录每个组是否有头部,是否有尾部和子项数量。从而能方便计算列表长度和每个组组头、组尾和子项在列表位置。...这个方法主要做两个事情,第一个设置组header,footer,还有children点击事件,并且需要返回具体索引,包括组索引,和组孩子索引。...而且支持局部插入刷新,局部移除刷新,也就是说可以按组插入或者移除数据,或者按组child某个未知插入或者移除数据。

1.8K00

优雅地实现RecyclerView上拉加载

RecylerView 上拉加载更多 上拉加载多状态 ---- 这篇博客承接上一篇博客--探索Android架构DataLayer层(DataManager方式)具体实现,其实是上篇博客一个使用比较普遍例子...至于通常下拉刷新我同意Google设计下拉刷新理念,即下拉刷新View行为,应该让View自己来实现,而下拉刷新有着更加广泛应用,几乎需要交互信息显示界面都是需要下拉刷新功能。...先谈谈思路,其实很简单,就是通过getItemViewType()加载不同布局,这里就是把加载更多布局封装进adapter。...-1,直接让adpater实现上面这个接口,这里直接贴出adapter代码: public class ArticleAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder...presenter或者activity如何使用,我今天写这个其实是上一篇博客继续或者例子。

89440

一篇博客理解Recyclerview使用

Android 5.0开始,谷歌公司推出了RecylerView控件,当看到RecylerView这个新控件时候,大部分人会首先发出一个疑问,recylerview是什么?...为什么会有recylerview也就是说recylerview优点是什么?recylerview怎么用?等等,下面我们将深入解析recylerview1.RecyclerView是什么?...RecyclerViewsupport-v7包新组件,一个强大滑动组件,与经典ListView相比,同样拥有item回收复用功能,这一点名字Recyclerview即回收view也可以看出...,然后在onTouchEvent,监听ACTION_MOVE,用户手指滑动,不断把当前第一个View回调回去 关于为什么getChildAt(0)和getChildPosition()可用,起初我以为有...,就是我们在适配器绑定ViewHolder方法需要重新给我们itemView布局设置height,这里生成随机数来设置高度

63030

Android ListView 分组效果实现「建议收藏」

返回3,那么每个item可能就会有0,1,2三个缓存复用对象,这个时候getItemViewType返回0,这样就会用0这个对象去复用。...1). 内部类Category 这个没什么东西包含一个BaseAdapter对象和一些必要方法, 因为我们在MobileCategoryAdatper里面肯定是会有List对象。 2)....因为我们要ListView.setOnClickListener这个类对象。 在这个类我们会区分当前点击title(点击时候我们可能会展开和收缩该分组)还是item。...3). getViewTypeCount() 1+每个CategoryAdpaterViewType。加1可以想象是每个Category都有一个标题。...return -1; } 如果标题位置时候返回0类型,每个CatatoryViewType则是慢慢往上加

49810

Android 虚拟按键适配动态调整布局方法

最近项目中遇到了华为虚拟按键适配问题,主页RecylerView(如下图),如果不做适配,在界面初始化完毕后,虚拟按键会遮挡页面或者空出一些留白部分,针对这个问题上网找了些资料,总结了以下方法 ?...首页下部分RecylerView 首页下半部分RecylerView(针对适配) 监听虚拟键切换 注册系统广播 getContentResolver().registerContentObserver...,然后根据高度动态设置子item高度 布局监听器回调 在回调测量RecylerView可显示实际高度 @Override public void onGlobalLayout() {...refreshGridViewHeight(); } 注意这个回调会调用多次,获取完高度后要移除这个监听,否则会造成界面卡顿 private void refreshGridViewHeight...(mNavigationStatusObserver); 以上这篇Android 虚拟按键适配动态调整布局方法就是小编分享给大家全部内容了,希望能给大家一个参考。

93020

android常见bug跟踪

前言 对app线上bug收集(友盟、云捕等)有时会得到这样异常堆栈信息:没有一行代码有关自身程序代码。...解决办法只能从根源上进行: 在我们编写getView方法,对最终返回参数自己进行非空判断,当针对不同position处getItemViewType得到View对象为null,可以自己抛出一个...// 在自己Adapter子类 @Override public View getView(int position, View convertView, ViewGroup parent) {...这里根据getItemViewType生成不同View逻辑,将View对象存储在convertView if (convertView == null) { // throw...注意:getView返回nulljava语法上没问题,虽然根据约定,它返回null肯定会引发空指针异常——但是这是对调用getView方法而言。

99450

recyclerView源码解析

Adpater职责对用数据对每个item进行填充。layoutManager作用主要就是用摆放item位置。...,需要dispatchLayoutStep1,dispatchLayoutStep2,dispatchLayoutStep3这三步来执行,step1进行预布局,主要跟记录数据更新需要进行动画所需信息有关...当一个视图被分离,它父级为 null 并且不能通过调用getChildAt(int)来检索。...,多个RecyclerView可以指定使用一个pool对象private RecycledViewPool mRecyclerPool;//自定义缓存机制对象,用户可以继承之实现自己一个缓存对象,在指定时机会使用该对象缓存对象...recyclerView使用两个adapter,文本列表相关逻辑用一个Adapter实现,处理Button列表相关逻辑用另一个Adapter实现,这样以来就降低了代码耦合性,并提高了代码复用性

73300

*Android面试实战总结2

返回  getview 产生 item 类型个数,如果 我们listview 中所有的item 只有一种类型 ,那么我们不需要复写这个方法,这个方法 当我们给listview  setAdapter...public int getViewTypeCount() {   return 1;      }   另一个方法  getItemViewType    Get the type...弱引用和软引用区别是清空和将加入排队时间点不同: 一个弱引用应该尽可能晚被清除和加入队列,那是因为如果内存不足vm将是危险 弱引用对象是一旦知道引用弱获取对象就会被清除和入队。...public int getViewTypeCount() {   return 1;      }   另一个方法  getItemViewType    Get the type...弱引用和软引用区别是清空和将加入排队时间点不同: 一个弱引用应该尽可能晚被清除和加入队列,那是因为如果内存不足vm将是危险 弱引用对象是一旦知道引用弱获取对象就会被清除和入队。

38730

Android RecyclerView浅析(分类型)

设置点击事件有两种: 方式一:在AdapteronBindViewHolder()方法设置,也可以定义一个接口回调,让MainAcitivity实现自定义接口,然后在MainActivity设置接口回调监听即可...创建一个ViewHolder(),一般为加载一个布局文件,注意此处inflate和LayoutInflater区别 6.分类型RecyclerView 6.1重写方法和和一般类似,多了一个getItemViewType...; 7.RecyclerView三种布局管理添加头方式: 7.1LinearLayoutManager添加头部 直接分类型就可以 第一个头部第一种类型 7.2GridLayoutManager添加头部...2 : 1; }); rv.setLayoutManager(manager); rv.setAdapter(new MyAdapter()); //解释:明明头部返回2...返回2不应该是2列返回11列吗?

1.1K20

Android基于DataBinding封装RecyclerView实现快速列表开发

前言 在移动应用开发,列表组件一个非常常见 UI 组件,绝大多数应用开发中都会使用到列表组件进行界面的开发,在 Android 开发列表组件一般使用官方提供 RecyclerView ,而...DataBinding Google 官方一个数据绑定框架,借助该库,您可以声明式将应用数据源绑定到布局界面组件上,实现通过数据驱动界面更新,从而降低布局和逻辑耦合性,使代码逻辑更加清晰...fun eventDeleteItem(item:String){ data.remove(item) } } 该方法接收了一个 String 类型 item 数据,实现从列表移除该...设置 item 内部事件处理对象,绑定到布局 handler 变量。...: Int 这里定义一个抽象 get 方法,需要子类去实现返回具体 item 布局资源 id。

2.7K30

Android仿微信朋友圈点击评论自动定位到相关行功能

打开你微信朋友圈,点击评论,你就会发现有一个小细节:文本输入框高度恰好定位到这条信息底部位置 ?...输入框产生 这里有一个关键地方,如何将EditText悬浮在键盘上,并且RecyclerView不会被挤上去。这里我们可以使用Dialog,同时在布局要使用ScrollView来进行占位 <?...(commentView: View, position: Int) { // RV评论区起始Y位置 val rvInputY = getY(commentView) val rvInputHeight...针对第一个问题,我们直接添加一个空View作为列表最后一项即可,并且高度要等于输入框高度;第二个问题也很简单,就是监听键盘弹出与隐藏View高度发生变化 data class BottomClass...(val value: String) 点击时候再添加 handler.postDelayed({ // 对话框输入框Y位置 val dialogY = getY(dialog!!.

1.5K60

Android 自定义 MarqueeView 实现跑马灯 —— 原理篇

这篇博客,让我们一起来看一下 MarqueeView 实现原理。 在上一篇博客,我们知道我们通过给 MarqueeView setAdapter 来刷新界面的。...因为同一刻只有一个 delegate 能处理该 position; 当没有指定 viewType 时候,我们会以当前 delegates 容量作为 key 存进 SparseArrayCompat...在 delegates 数组对应 key,即我们 viewType public int getItemViewType(T item, int position) {...mMultiItemTypeAdapter.createItemView(index, convertView, MarqueeView.this); return itemView; } 代码可以看出我们...实质用 hanlde 不断发送消息 接受到 APPEAR 消息时候: 首先获取当前位置 ItemView,接着执行动画,执行完动画之后,mLastView = mCurView; 。

1.1K10
领券