首页
学习
活动
专区
圈层
工具
发布

Kotlin入门(23)适配器的进阶表达

前面在介绍列表视图和网格视图时,它们的适配器代码都存在视图持有者ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应的视图对象。...视图持有者的设计理念固然美好,却苦了Android开发者,每次由BaseAdapter派生新的适配器类,都必须手工处理视图持有者的相关逻辑,实在是个沉重的负担。...有鉴于此,循环视图的适配器把视图持有者的重用逻辑剥离出来,由系统自行判断并处理持有者的重用操作。...现在由Kotlin实现循环视图的适配器类,综合前面两小节提到的优化技术,加上视图持有者的自动重用,适配器代码又得到了进一步的精简。...,所以需要修改模块的build.gradle,在文件末尾添加下面几行配置,表示允许引用安卓插件库: androidExtensions {     experimental = true } 即使修改后的适配器代码用了新插件

2.7K41
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Android】RecyclerView多布局展示案例

    三三要成为安卓糕手 零:需求 怎么在recycle中实现不同的item样式,如新闻列表中不同样式 item(单图、双图、三图、广告)的展示。...2. getItemViewType(int position):确定每条数据的布局类型 重写adpter中的getItemViewType方法,根据不同的position决定里面到底显示成什么样 对每个位置...(作用:将 XML 布局转换为 Java 可操作的 View,并通过 ViewHolder 缓存控件,提升性能) 4. onBindViewHolder(ViewHolder holder, int position...) 绑定数据到控件对每个位置,将数据中的内容设置到ViewHolder缓存的控件中: 根据position获取对应Article对象和viewType。...(@NonNull RecyclerView.ViewHolder holder, int position) { Log.i(TAG, "onBindViewHolder: position

    30210

    安卓天气预报app(三)——城市管理、数据库操作

    ✅简易的安卓天气app(一)——解析Json数据、数据类封装 ✅简易的安卓天气app(二)——适配器、每小时数据展示 简易的安卓天气app(三)——城市管理、数据库操作 ✅简易的安卓天气app(四)—...(源码见页尾✨) 本项目用到的天气api接口天气api 详细操作内容见第一篇-->简易的安卓天气app(一)——解析Json数据<-- 此接口当我们默认不拼接参数,直接访问会得到当前位置的温度Json...所以接下来就是进行安卓SQLite数据库的一些操作,把当前位置信息保存到数据库中(城市名,城市温度,更新时间) 待实现效果: 数据库成功插入当前位置数据信息(之前测试插入过几条的测试对照用数据):...位置商丘的信息成功插入,插入之后,后续要进行的操作就是实时更新数据库 涉及内容 SQLite数据库操作,创建数据库,新建表,增删查改操作 适配器adapter添加点击事件 页面传值跳转项目结构...@NonNull @Override public AddViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType

    2.1K30

    使用优化 | RecyclerView中可优化的点

    ViewHolder 的实践:一般情况下我们是在 onBindViewHolder 方法中绑定数据,但是如果是多个条目,那么这种写法就会非常臃肿,这种情况下就可以吧绑定数据的代码写在 ViewHolder...这也是 Poll 和前面1和2中不一样的地方。 如果在上面的 4 级缓存中都没有,则会重新创建 ViewHolder。最终调用的是 onCreateViewHolder,由用户自行创建。...每看到一次,这个方法就会执行一次 7,你可能不知道的 RecyclerView 性能优化策略 不要在 onBindViewHolder 方法中创建点击事件 在创建 ViewHolder 的时候创建...这里的保留指的是 ,在原来数据的基础上进行增删改查,使其最终的结果和刷新的数据一样。...否则使用增量的数据。 最终的效果就是,上面的最后一张图; 这里只是演示一下增量的用法,具体的判断应该自行实现,上述代码只是写起来简单,看一下效果。

    2.2K30

    使用优化 | RecyclerView中可优化的点

    ViewHolder 的实践:一般情况下我们是在 onBindViewHolder 方法中绑定数据,但是如果是多个条目,那么这种写法就会非常臃肿,这种情况下就可以吧绑定数据的代码写在 ViewHolder...这也是 Poll 和前面1和2中不一样的地方。 如果在上面的 4 级缓存中都没有,则会重新创建 ViewHolder。最终调用的是 onCreateViewHolder,由用户自行创建。...每看到一次,这个方法就会执行一次 7,你可能不知道的 RecyclerView 性能优化策略 不要在 onBindViewHolder 方法中创建点击事件 在创建 ViewHolder 的时候创建...这里的保留指的是 ,在原来数据的基础上进行增删改查,使其最终的结果和刷新的数据一样。...否则使用增量的数据。 最终的效果就是,上面的最后一张图; 这里只是演示一下增量的用法,具体的判断应该自行实现,上述代码只是写起来简单,看一下效果。

    2.1K20

    RecyclerView局部刷新机制——payload

    payload的应用不仅仅是这么简单,在研究的过程中我还发现了另外一个函数 public void onBindViewHolder(@NonNull VH holder, int position,...的Adapter中的一个函数,我们一般使用 public abstract void onBindViewHolder(@NonNull VH var1, int var2); 因为上面那个重载的函数不是...比如说我们刷新的时候,只想改变一个TextView的文案 如果是之前的处理,会重新执行一遍onBindViewHolder(@NonNull VH var1, int var2),这样不仅那个TextView...重新设置文案即可,如下: @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull...,比如: @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull List<Object

    4K30

    郭神的抽丝剥茧心法修炼: 深剖RecyclerView

    ,RecyclerView.AdapterDataObserver 是数据变化接口,当适配器中的数据发生增删改的时候最终会调用该接口的实现类,从该接口的命名以及注册操作和取消注册操作可以看出其使用的是观察者模式...@NonNull ItemHolderInfo var3); void unused(ViewHolder var1); } 之前存储的和 ViewHolder 位置状态相关 InfoRecord...这里有必要说明一下,一些删除或者新增操作,通过使用适配器中通知删除或者新增的方法,最终还是会通知界面进行重绘。...2.2 获取 ViewHolder 入口是 Recycler#getViewForPosition,有一个位置的参数: public View getViewForPosition(int position...abstract void onBindViewHolder(VH holder, int position); 成功见到我们必须实现的 Adapter#onBindViewHolder 方法,这些完成以后

    1.8K20

    一次使用Kotlin实现酷炫多选操作的尝试

    那时我明白了必须千方百计把Vitaly的多选概念设计实现出来;所以我几乎立即就开始了编写这个控件的工作。现在让我们来看看这个安卓的多选动画是如何诞生的。 ?...这里是我在实现这个库的过程中,Kotlin的这些特性给我带来了方便: 1.扩展函数 Kotlin的扩展函数功能使得我们可以为现有的类添加新的函数,而不用修改原来的类。 就拿安卓的View来说。...这些方法非常普遍,而且不同编程语言都表现出相同的行为,包括Java 8 (streams)。不幸的是streams在安卓开发中还不能使用。   ...public void onBindViewHolder(@NonNull final ViewHolder holder, int position) { super.onBindViewHolder...public void onBindViewHolder(@NotNull final ViewHolder holder, int position) { super.onBindViewHolder

    1.6K20
    领券