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

实战 | 认识 RecyclerView

虽然 RecyclerView 的组成结构乍一看有些复杂,但是深入理解以后您会发现它其实非常简单明了。 本文会通过创建一个简单的 RecyclerView 实现一个列表来显示不同种类的花的名字。...当视图滑出屏幕时,RecyclerView 会复用它并且填充新的数据。由于它是通过回收已有的结构而不是持续创建新的列表项,所以它可以有效提高应用的时间效率和空间效率。...Adapter 类从数据源获得数据,并且将数据传递给正在更新其所持视图的 ViewHolder。下图显示了 RecyclerView、Adapter、ViewHolder 和数据之间的协作关系。...重写 onCreateViewHolder() 当 ViewHolder 创建的时候会调用该方法。在该方法里进行初始化和填充 RecyclerView 中的表项视图。...定义一个变量叫做 recyclerView,然后将 activity_main 中的 RecyclerView 赋值给 recyclerView。

1.3K30

31 天,从浅到深轻松学习 Kotlin

这只是替换空作为值或者返回事件情况的一个小语法。 Day 3:String 模板 格式化字符串?将$放在变量名的前面去表达字符串中的变量和表达式。使用 ${expression} 求表达式的值。...使用 Android KTX 只传递一个 Pair 创建 ContentValues。 Day 23:DSLs 特定于域的语言可以通过使用类型安全的构建器来完成。...Day 24:具体化 具体化的概念例子:Android KTX 中的 Context.systemService() 使用泛化来通过泛型传递 “真实” 类型。...Android KTX: 可跨越字符串的构建器 Day 30:updatePadding 扩展 通过默认参数扩展现有的 API 通常会让每个人都高兴。...Android KTX 允许您使用默认参数在视图的一侧设置填充。一行代码可以节省很多代码!

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

    用 CoordinatorLayout 处理滚动

    支持库中有一个映射到 AppBarLayout.ScrollingViewBehavior 的特殊字符串资源 @string/appbar_scrolling_view_behavior,它可以在某个特定的...transparent 通过像上面那样启用系统栏的半透明效果,你的布局会将内容填充到系统栏后面,因此你还必须在那些不想被系统栏覆盖的布局上使用 android:fitsSystemWindow...我们可以创建一个简单的只包含一张图片和文字的 Item,和一个可以填充这些 items 的适配器。...behavior.setState(BottomSheetBehavior.STATE_COLLAPSED); } } }); 你可以设置布局属性 app:behavior_hideable=true 来允许用户也可以通过滑动而隐藏底部表...属性,认为这样就可以将 pager 中的滚动事件向上传递然后就可以被CoordinatorLayout 管理。

    4.8K92

    Android开发中的Kotlin扩展函数技巧!

    扩展函数是Kotlin中的一种特殊函数,它允许我们向一个类添加新的函数,而无需继承或修改这个类的源代码。扩展函数的语法非常简单,只需要在函数名前面加上类名,并用点号隔开即可。...: val str = "hello" val reversedStr = String.reverse(str) 在上面的代码中,我们可以看到,编译器将reverse函数转换为了一个静态方法,并将字符串实例作为第一个参数传递进去...解决方法之一是使用完整的限定名称来调用特定的扩展函数,明确指定要调用的扩展函数。...,我们可以明确指定要调用的特定扩展函数,避免了命名冲突的问题。...的使用 在Android开发中,我们经常需要使用RecyclerView来显示列表数据。

    35520

    安卓常用的控件

    Button Button 是一个点击按钮控件,用于触发特定的操作或事件。 属性 android:text: 设置按钮上的文本。 android:onClick: 设置按钮点击时触发的事件处理方法。...它支持加载和显示各种格式的图片资源。 属性 android:src: 设置显示的图片资源。 android:scaleType: 设置图片的缩放类型(如适应、裁剪、填充等)。...CheckBox CheckBox 是一个复选框控件,允许用户在多项选择中进行选择。 属性 android:text: 设置复选框旁边的文本。...还允许开发者创建自定义控件,以满足特定的需求。...通过合理地使用这些控件,可以开发出功能强大且用户体验良好的应用程序。希望这篇博客能够帮助你更好地理解和使用Android的控件,如果有任何问题或想法,欢迎在评论区讨论!

    21210

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

    "/> 布局里通过 DataBinding 传入了一个 String 类型的 item 变量,并将这个变量绑定到了 TextView 的 text...属性上,即对 TextView 设置显示的字符串值,这里需要注意以下两点: • 变量名必须为 item,因为这是框架里封装好的,名称不对无法自动接收传递过来的数据 • item 的数据类型需跟前面 ViewModel...bind 是用于绑定数据,即将 item 的数据和布局绑定起来,这里是通过 binding.setVariable(BR.item, t)将数据传递到布局里的 item 变量; setItemEventHandler...是设置 item 内部事件处理的对象,绑定到布局的 handler 变量。...这里的 BR.item和 BR.handler是 DataBinding 根据布局里使用的变量自动生成的,所以为了生成这两个变量,建了一个空的布局文件,定义了这两个变量,如下: <?

    2.9K30

    【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )

    Android 事件分发 系列文章目录 【Android 事件分发】事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) 【Android...事件分发】事件分发源码分析 ( Activity 中各层级的事件传递 | Activity -> PhoneWindow -> DecorView -> ViewGroup ) 【Android 事件分发...】事件分发源码分析 ( ViewGroup 事件传递机制 一 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 二 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 三 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 四 | View 事件传递机制 ) 【Android 事件分发】事件分发源码分析...( ViewGroup 事件传递机制 五 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 ) 【Android 事件分发】事件分发源码分析 ( ViewGroup

    40520

    Android组件化架构

    可以使用tools:replace="android:name"解决,因为App编译最终只会允许声明一个Application。...Android中Activity,Fragment及Service信息传递较复杂,通过广播的形式实现消息传递耗时且不安全,产生了事件总线机制。它是对发布-订阅模式的一种实现。...它是一种集中式事件处理机制,允许不同的组件之间进行彼此通信而又不需要相互依赖,达到一种解耦的目的。...第二种:gradle的命名提示机制,使用resourcePrefix字段: android { resourcePrefix "组件名_" } 所有的资源命必须以指定的字符串作为前缀,否则会报错,但是...Gradle优化 Gradle本质是一个自动化构建工具,基于Groovy的特定领域语言(DSL)来声明项目设置,Android Studio构建工程时,利用gradle编写的插件来加载工程配置和编译文件

    1.2K10

    《移动互联网技术》第五章 界面开发: 掌握Activity的基本概念,Activity的堆栈管理和生命周期

    事件、事件触发以及事件的处理,构成了界面交互的事件模型。 通常将事件源和事件监听器分离开。事件源上发生的特定事件的具体信息,存放在Event对象中,并通过它传递给事件监听器。...在代码实现上,有三种不同的事件处理方式: (1)采用监听器的方式,界面控件需要绑定一个特定的监听模块; (2)采用回调方式,需要重写Android已经定义好的回调函数; (3)采用轮询的事件处理方式,主要通过...android:stretchColumns允许将TableLayout中的某一列进行拉伸,以达到自动适应屏幕宽度的作用。...通过重写View中的这些回调函数就可以响应特定的事件,比如重写onKeyDown、onKeyUp、onTouchEvent等回调函数。...Intent设置的action属性就是一个字符串标记,用来告知Android系统自己的行为;通过Android系统应用组件就能找到执行者完成相应的动作。

    23410

    Android-UI布局---RecyclerView学习(二)利用它做的相册集效果

    这个代码在网上有, 横向ListView的功能,参考Android 自定义RecyclerView 实现真正的Gallery效果 首先说布局文件: RecyclerView视图中的item的布局: 这个布局下面是高度120dp 宽度填充父窗体,然后整个手机屏幕多余的空间都给了上面的imageview 视图 接下来是就是视图的自定义...需要学习的第二个知识点就是:在对应的activity中关于RecyclerView 的使用 RecyclerView的使用代码: //找到对应的视图控件 mRecyclerView = (MyRecyclerView...那么就必须解释下RecyclerView的这个名字了,从它类名上看,RecyclerView代表的意义是,我只管Recycler View,也就是说RecyclerView只管回收与复用View,其他的你可以自己去设置...可以看出其高度的解耦,给予你充分的定制自由(所以你才可以轻松的通过这个控件实现ListView,GirdView,瀑布流等效果)。

    1.4K30

    RecyclerView必知必会

    基本概念 RecyclerView是Android 5.0提出的新UI控件,位于support-v7包中,可以通过在build.gradle中添加compile 'com.android.support...通过“android:divider”设置自定义分割线。 setOnItemClickListener()和setOnItemLongClickListener()设置点击事件和长按事件。...fill(): 负责填充RecyclerView。 scrollVerticallyBy():根据手指的移动滑动一定距离,并调用fill()填充。...runPendingAnimations(): RecyclerView动画的执行方式并不是立即执行,而是每帧执行一次,比如两帧之间添加了多个Item,则会将这些将要执行的动画Pending住,保存在成员变量中...其实ListView和RecyclerView的layout过程大同小异,ListView的布局函数是layoutChildren(),实现如下: 其中fillXxx()实现了对Item View进行填充

    4.8K20

    DataBinding的用法

    页面通过setContentView()方法关联布局文件,再通过UI控件的id找到控件,接着在页面中通过代码对控件进行操作。...Setter方法,我们可以使用setBook()方法将Book对象传递给布局文件中对应的布局变量。   ...一级页面正是通过命名空间xmlns:app引用布局变量book,将数据对象传递给二级页面的,代码如下: <?xml version="1.0" encoding="utf-8" ?...五.自定义BindingAdapter   为了让布局文件能够承担更多的工作,处理更复杂的业务,DataBinding允许我们自定义BindingAdapter,下面我们以ImageView加载网络图片为例来进行说明...后面的设局布局变量和完成双向绑定和之前的方法一样,就不贴代码了。 七.RecyclerView的绑定机制   第一步,编写RecyclerView的布局文件: <?

    22820

    一篇博客理解Recyclerview的使用

    例如:你想控制横向或者纵向滑动列表效果可以通过LinearLayoutManager这个类来进行控制(与GridView效果对应的是GridLayoutManager,与瀑布流对应的还StaggeredGridLayoutManager...你想控制Item的分隔线,可以通过继承RecyclerView的ItemDecoration这个类,然后针对自己的业务需求去抒写代码。...③ 可以控制Item增删的动画,可以通过ItemAnimator这个类进行控制,当然针对增删的动画,RecyclerView有其自己默认的实现。...接下来通过几个小的实例帮助大家更深入的了解RecyclerView的用法。...,对RecyclerView的每一个itemView设置点击事件: @Override // 填充onCreateViewHolder方法返回的holder中的控件 public void onBindViewHolder

    69730

    Material Design 实战 之第四弹 —— 卡片布局

    为充分利用屏幕的空间,我们可以使用RecyclerView来填充MatenalTest项目的主界面部分。 这里参考一下郭神的demo——实现水果列表,首先需要准备许多张水果图片: ?...由于各张水果图片的长宽比例可能都不一致,为了让所有的图片都能填充满整个ImageView,这里使用了centerCrop模式,它可以让图片保持原有比例填充满ImageView,并将超出屏幕的部分裁剪掉。...其中appbar_scrolling_view_behavior这个字符串也是由DesignSupport库提供的。 重新运行一下程序,可见遮挡问题就此解决了: ?...滚动的时候就便将滚动事件都通知给AppBarLayout了 (记得刚刚加的app:layout_behavior="@string/appbar_scrolling_view_behavior"吗,看一下这个字符串...当AppBarLayout接收到滚动事件的时候,它内部的子控件是可以指定如何去影响这些事件的, 通过app:layout_scrollFlags属性就能实现。

    2.1K10
    领券