多布局实现,时间悬浮为一个布局,数据相关内容为一个布局,这里推荐一个 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)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)