Android开发之头部悬浮的上拉加载,下拉刷新的列表

Android开发之头部悬浮的上拉加载,下拉刷新的列表,第1张

带时间戳的列表,要求时间悬浮顶部,动态替换顶部时间如下图,如下图,

布局实现,时间悬浮为一个布局,数据相关内容为一个布局,这里推荐一个 Adapter依赖库BRVAH

根据返回的ItemViewType来加载不同的布局,动态设置时间布局的显示

加载数据时根据时间比较,判断当前数据是头部数据还是普通数据,添加进集合中

注意数据的判断,正确进行头部数据的添加。

将时间转化为xx月xx日的格式

默认情况下,最多只显示四行文本如下

点击之后,展开所有文本

具体实现如下:

设置下拉刷新,下拉加载的布局

具体实现可参考Demo,或者依赖库文档

刷新之后回调

下拉加载,上拉刷新布局如裤亮图,具体可运行demo查看

在头部悬浮,结合上拉刷新下拉加载过程中,遇到过上拉加载,导致头部悬浮布局错位,先前采用

SmartRefreshLayout ,由于SmartRefreshLayout上拉加载会将布局向上顶,导致悬浮布局错误,调试无果后,采用 EasyRefreshLayout 。

头部悬浮的上拉加载,下拉伍纯搭刷腔拿新的列表主要实现采用 Adapter依赖库BRVAH 及其推荐相关库 EasyRefreshLayout 和 RecyclerView粘性标签库 。其他更多用法,可以自行访问相关库学习。

最后给出 DEMO .

有两种使用RecyclerViewHeader的方法:

普通方法

(使用起来非常简单,但是它会添加额外的布局,因此效率略低于第二种方法):

为header创建一个xml布局(可以包括任意view或者ViewGroup)

<FrameLayout

android:layout_width="match_parent"

android:layout_height="100dp">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:text="header"/>

<胡梁袭/FrameLayout>

使用静态初始方法从xml中创建RecyclerViewHeader

RecyclerViewHeader header = RecyclerViewHeader.fromXml(context, R.layout.header)

将RecyclerViewHeader Attach 到RecyclerView,搞定!

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view)

// set LayoutManager for your RecyclerView

header.attachTo(recyclerView)

Header-already-aligned approach (不会引入任何额外布局):

将RecyclerViewHeader布局放在RecyclerView的上层。

<FrameLayout

android:layout_width="match_parent"

android:layout_height="wrap_content">

<android.support.v7.widget.RecyclerView

android:id="渣烂@+id/recycler"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_gravity="center_horizontal|top" />

<com.bartoszlipinski.recyclerviewheader.RecyclerViewHeader

android:id="@+id/header"

android:layout_width="match_parent"

android:layout_height="100dp"

android:layout_gravity="center_horizontal|top">

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerInParent="裤兄true"

android:text="header"/>

</com.bartoszlipinski.recyclerviewheader.RecyclerViewHeader>

</FrameLayout>

获得RecyclerViewHeader对象:

RecyclerViewHeader header = (RecyclerViewHeader) findViewById(R.id.header)

把RecyclerViewHeader赋予RecyclerView

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view)

// set LayoutManager for your RecyclerView

header.attachTo(recyclerView, true)

注意事项

RecyclerViewHeader必须在RecyclerView设置了LayoutManager之后调用。

目前该库适用于LinearLayoutManager,GridLayoutManager和StaggeredGridLayoutManager布局的RecyclerViews。

只支持垂直布局LayoutManager

代码如下:

引入

compile 'me.leefeng:lfrecyclerview:1.0.1'

/*找到控件*/

recycleview = (LFRecyclerView) findViewById(R.id.recycleview)

/*设置属性*/

recycleview.setLoadMore(true)//设置为可上拉加载,默认 false

recycleview.setRefresh(true)// 设置为可下拉刷新,默认 true

recycleview.setAutoLoadMore(true)//设置滑动到底部自动加载,默认 false

recycleview.setOnItemClickListener(this)// 条目点击,点击和长按监听

recycleview.setLFRecyclerViewListener(this)//下枝让拉刷新上拉加载监听

recycleview.setScrollChangeListener(this)//滑动监听

recycleview.hideTimeView()//隐藏时间,默认显示时间

recycleview.setHeaderView(tv)//设置一个头部,只有一个大概满足了多数猛链局的要求

recycleview.setNoDateShow()//没有数据时,底唤歼部显示"没有数据"字样,默认不显示

/*添加适配器*/

adapter=new MainAdapter(list)

recycleview.setAdapter(adapter)


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11980825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存