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

RecyclerView实现混合布局

我们可以看到,这个RecyclerView中有多种item显示出来,那么具体怎么实现呢,其实在RecyclerView中,我们可以重写方法getItemViewType(),这个方法会传进一个参数position...表示当前是第几个Item,然后我们可以通过position拿到当前的Item对象,然后判断这个item对象需要那种视图,返回一个int类型的视图标志,然后在onCreatViewHolder方法中给引入布局...(int position) { return super.getItemViewType(position); }  我们一般情况下会在上面这些方法中做一些具体操作,所以只要掌握了上面这几个方法...RecyclerView.Adapter   a:getItemViewType返回type值   b:onCreateViewHolder加载不同的视图...,还要存放在多个list里面,下次下拉刷新时还要在多个list中累加数据,这样就有点麻烦了 不挑出来直接就只判断type,然后根据type去调用不同的layout,然后在绑定数据的方法中再次判断是不是自己想要的

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

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

    随着用户的下拉或者上拉手势,已经被回收的列表项要重新加载到界面上,倘若每次加载都得从头创建视图对象,势必增加了系统的资源开销。...现在由Kotlin实现循环视图的适配器类,综合前面两小节提到的优化技术,加上视图持有者的自动重用,适配器代码又得到了进一步的精简。...下面便是个循环视图的网格适配器,它实现了类似淘宝主页的网格频道栏目,具体的Kotlin代码如下所示: //把公共属性和公共方法剥离到基类RecyclerBaseAdapter, //此处仅需实现getItemCount...这下不管是在Activity代码,还是在适配器代码中,均可将控件名称拿来直接调用了。...内部的其余代码都是允许复用的,因此,接下来的工作就是想办法把这三个要素抽象为公共类的某种变量。

    1.8K41

    AndroidApp和车机开发:RecyclerView实现触摸和拖放的功能

    引言 在现代应用程序中,用户交互性是提供丰富用户体验的关键因素。RecyclerView作为Android中处理列表和网格布局的强大组件,支持多种交互,包括拖放排序。...来精确控制拖动行为,涉及重写onMove方法和getMovementFlags方法 拖动排序逻辑 onMove:此方法在拖动操作期间被调用,用于交换列表项的位置,并更新适配器的数据源。...getMovementFlags:在此方法中,我们将定义列表项可拖动的方向。...第二步:创建视图适配器 创建 MyAdapter 类,继承自 RecyclerView.Adapter 实现 onCreateViewHolder 和 onBindViewHolder 方法: import...) .... } 第三步:配置 RecyclerView 和适配器 在 MainActivity 中配置 RecyclerView 和适配器: /** * @author Nimyears */ class

    28920

    Android RecyclerView浅析(分类型)

    2.实现步骤: 布局,适配器,继承于RecyclerView的适配器, viewHolder继承于RecyclerView的适配器 设置泛型,然后再次实现对应的方法 3.RecyclerView各个布局管理器的说明...设置点击事件有两种: 方式一:在Adapter的onBindViewHolder()方法中设置,也可以定义一个接口回调,让MainAcitivity实现自定义的接口,然后在MainActivity设置接口回调的监听即可...recyclerView.setAdapter(new MyAdapter()); 5.4创建适配器 写一个类继承于Recyclerview的Adapter重写几个方法,写一个viewHolder...,然后设置Adapter的泛型为当前的ViewHolder,如果有不一样的就要重写其方法 关于其几个方法的说明: class MyAdapter extends RecyclerView.Adapter...创建一个ViewHolder(),一般为加载一个布局文件,注意此处inflate和LayoutInflater的区别 6.分类型的RecyclerView 6.1重写方法和和一般的类似,多了一个getItemViewType

    1.1K20

    使用 ConcatAdapter 顺序连接其他 Adapter

    使用不同的适配器可以使您更好地区分列表的每个部分。例如,如果要显示一个头部,可以将其封装在它自己的 Adapter 中,而无需把头部的逻辑与处理列表显示的 Adapter 混杂在一起。...只要设置 isolateViewTypes = false,就可以让所有合并进来的 Adapter 使用同一个视图池。...⚠️ 如果要支持不同的 ViewHolder 类型,您应该实现 Adapter.getItemViewType 方法。...当您复用 ViewHolder 时,确保同一视图类型没有对应不同的 ViewHodler!防止出现这个问题的最佳实践之一,便是将布局 ID 作为视图类型返回。 中的 stable id。您可以查看 StableIdMode 文档来获得更多关于其工作原理的信息。

    81420

    Android开发笔记(一百二十二)循环器视图RecyclerView

    下面看看强悍的RecyclerView都提供了哪些常用方法: setAdapter : 设置列表项的适配器。有关适配器的详细说明见下一标题。...下面是与RecyclerView.Adapter相关的常用方法: 下面是自定义适配器必须要重写的方法: getItemCount : 获得列表项的数目。...onCreateViewHolder : 创建整个布局的视图持有者。输入参数中包括视图类型,可根据视图类型加载不同的布局,从而实现带头部的列表布局。...onBindViewHolder : 绑定每项的视图持有者。 下面是可以重写也可以不重写的方法: getItemViewType : 返回每项的视图类型。...这里返回的视图类型给onCreateViewHolder方法使用。 getItemId : 获得每项的编号。

    2.4K20

    笔记42 | Android加载器Adapter的深入学习篇(一)

    的方法获得布局视图 2.我们一般会Inflate一个新的View,填充数据并返回显示 如果我们的Item很多话,Android中有个叫做Recycler的构件,无论数据中是多少个item,在显示上Recycler...只存储其中可见的View在内存中: ?...和getViewTypeCount 前一篇中实现了各种样式的Adapter,从简单的单字符类型,到多字符类型,再到有button的类型,当一个listview需要加载各种不同的item时,就需要getItemViewType...//返回由getView创建的视图类型的数量。每种类型都表示可以在getView中转换的一组视图。...和getViewTypeCount方法后,getViewTypeCount返回Item的则为我们定义的position,然后在getView可以进行判断 switch (getItemViewType(

    60240

    从 Android 开发到读懂源码 第05期:Leanback 结构源码简析

    presenters 数组,中途不可改变数据 ItemBridgeAdapter 填充至 BaseGridView 的适配器,继承 RecyclerView.Adapter 主要有两个构造方法,需要传递一个...中每一个 Item 的视图,如果使用 ListRow 则是创建每一行中的每一个 Item 视图 @Override public ViewHolder onCreateViewHolder...ItemBridgeAdapter ,看 android 命名应该是一个桥接的适配器,这也是整个模块中核心类之一 // 缓存了构造传进来的 ArrayObjectAdapter...RecyclerView 的流程去分析 ItemBridgeAdapter ,首先是 getItemViewType() 方法。...可以直接调用 setter 主动赋值,如果没有赋值过,则会通过构造方法中的 // ArrayObjectAdapter.getPresenterSelector 进行获取视图构造筛选器

    2.3K71

    Adapter分组封装

    支持局部插入刷新,局部移除刷新,也就是说可以按组插入或者移除数据,或者按组中child的某个未知插入或者移除数据。 支持组中header,footer,child的各个视图view的自定义点击事件。...主要操作步骤 在onCreateViewHolder中根据viewType参数,也就是getItemViewType的返回值来判断需要创建的ViewHolder类型 在onBindViewHolder方法中对...在getItemViewType方法中。 if之类的逻辑判断简化代码,可以简单粗暴的用作为TYPE_HEADER,TYPE_FOOTER,TYPE_CHILD增加type标识。...``` 在onCreateViewHolder方法中 创建viewHolder,主要作用是创建Item视图,并返回相应的ViewHolder。...第二个是绑定viewHolder,主要作用是绑定数据到正确的Item视图上,这个可以把方法抽象,让子类去实现。

    1.9K00

    装饰者模式Decorator

    ,工作量还是蛮大的。...底部加载更多的的应用就可以用装饰者模式,RecyclerView适配器(RecyclerViewAdapter)是被装饰者,底部加载更多适配器 (LoadMoreAdapterWrapper) 是装饰者...) 方法中判断当前界面要获取的显示的item是否是最后一个item(即加载更多或已加载完毕的item),若是,则根据是否还有数据返回相对应的布局id( 即加载更多或已加载完毕)。...,service类增添了不少自身特有的方法,而在Internal API中,在attach()方法中attachBaseContext(context)就是调用的父类ContextWrapper中的方法...(Intent intent)方法,虽然在Service中没有该方法,但调用的其实是父类ContextWrapper中的startActivity(Intent intent),该方法如下:

    63530

    Android开发-Listview中显示不同的视图布局

    使用场景 在重写ListView的BaseAdapter时,我们常常在getView()方法中复用convertView,以提高性能。...比如有些行为纯文本,有些行则是图文混排,这里纯文本行为一类布局,图文混排的行为第二类布局。单一类型的ListView很简单,下面着重介绍一下ListView包含多种类型视图布局的情形。...2.ListView包含不同Item的布局 我们需要做这些工作:   1)重写 getViewTypeCount() – 该方法返回多少个不同的布局   2)重写 getItemViewType...(int) – 根据position返回相应的Item   3)根据view item的类型,在getView中创建正确的convertView 3.案例 import java.util.ArrayList...,获得当前所需要的view样式     @Override     public int getItemViewType(int position) {       // TODO Auto-generated

    2.3K30

    2014-10-27Android学习------布局处理(八)------自定义ListView的监听事件和Adapter的实现-----城市列表应用程序

    @id/android:list 这样在实现布局的activity类里面我们是不用去通过资源文件找到他们,而是一个简单的 SimpleAdapter( 上下文, 数据data, 资源布局文件的...id, 键值(这个键值必须跟data包含于data里面的键值,string类型,也必须跟布局文件上面的空间的id相匹配), int[]数组,这个数组就是布局文件的里面的构件在资源文件中的id号,并且他们需要和.../40481965 回顾下SimpleAdapter的实现方法,接下来我们来看看自定义的ListView该怎么实现,看看两者之间的区别是什么: 视图效果: 1.申明一个ListView 对象:...满足不了我们的,我们必须自己去构造自己的Adapter才行 因为:BaseAdapter是一个基类,没有实现绑定数据的功能 使用BaseAdapter的话需要重载四个方法,这些方法分别是getCount...return position; } //继承BaseAdapter 我们需要重载这个方法 这个就是用来刷新你的View视图的 @Override public View getView

    53720
    领券