(一) 超简单自定义上下刷新布局-LtRecyclerView v2.x版本(基本使用)
(二) LtRecyclerView v2.x (更多实用方法)
(三) LtRecyclerView v2.x (自定义刷新View)
LtRecyclerView2.x版本比1.x版本多了几个好用的功能,很实用
总体功能:
1.带有上拉加载和下拉刷新和回调
2.设置条目点击事件和条目长按事件
3.添加头布局和尾布局
4.添加没条目时展示的View(或者添加没条目和有条目时的回调事件)
5.添加分割线(也可以用图片)
6.自定义上拉加载的View
7.自定义下拉刷新的View(包括RecyclerView移动和不移动)
图示:
或一行代码改为:
使用:
方式(一):远程仓库引用方式:
在根项目的build.gradle文件中加入:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
需要添加的地方加入:
implementation 'com.github.ltttttttttttt:ltviews:2.0.8'
方式(二):使用aar包
- 下载aar包 https://pan.baidu.com/s/1JU7E2JvuH7wMxBMGR25X5A
- 把ltviews.aar放入libs文件夹
在app的Build.Gradle中写:
android{
...
}
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile name: 'ltviews-2.0.1', ext: 'aar'
compile 'com.android.support:recyclerview-v7:25.3.1'
}
图示:
正式使用
3.xml布局文件中:
<com.lt.ltviews.lt_recyclerview.LTRecyclerView
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:dividerHeight="1dp" //设置分割线的高度,默认颜色是#d5d5d5
app:noItemText="暂无数据" //设置没有数据时展示的文字 />
在Application的onCreate中:
LtRecyclerViewManager.create().init(this);
4.java代码使用示例,只需要set一个适配器和加一个加载的回调即可
rv = (LTRecyclerView) findViewById(R.id.rv);
//创建一个适配器
LtAdapter adapter = new LtAdapter(null) {
@Override
public RecyclerView.ViewHolder onLtCreateViewHolder(ViewGroup parent, int viewType) {
//在这里返回一个ViewHolder,构造里放需要展示的View
return new RecyclerView.ViewHolder(new TextView(getApplicationContext())) {
};
}
@Override
public int getLtItemCount() {
//适配器展示多少条数据
return 100;
}
@Override
public void onLtBindViewHolder(RecyclerView.ViewHolder holder, int position) {
//给View设置数据
((TextView) holder.itemView).setText("" + position);
}
};
adapter.setOnRvItemClickListener(new OnRvItemClickListener() {
@Override
public void onItemClick(View itemView, int position) {
//条目的点击事件
}
});
rv.setAdapter(adapter)
.setOnUpAndDownListener(new OnUpAndDownListener() {
@Override
public void up() {
//上拉加载时的回调
}
@Override
public void down() {
//下拉刷新时的回调
}
});
//设置每行有多少个条目,默认是1
rv.setSpanCount(3);
5.设置刷新状态的方法
rv.setTopRefresh(false);//设置是否下拉刷新
rv.setBottomRefresh(false);//设置是否上拉加载
rv.notifyDataSetChanged();//刷新数据源(更新条目)
6.Kotlin加持适配器(使用Kotlin语言可用)
abstract class BaseLtAdapterOneType<T>(var view: View?, var list: ArrayList<T>?, var itemLayoutId: Int) : LtAdapter(view) {
abstract fun setData(v: View, b: T, i: Int)
override fun onLtBindViewHolder(p0: RecyclerView.ViewHolder?, p1: Int) {
setData((p0 as BaseLtViewHolder).itemView, list!![p1], p1)
}
override fun getLtItemCount() = ListUtil.getSize(list)
override fun onLtCreateViewHolder(p0: ViewGroup?, p1: Int) = BaseLtViewHolder(p0?.autoInflate(itemLayoutId)!!)
}
继承BaseLtAdapterOneType使用
class MAdapter(context: Context, list: ArrayList<InfoBean>?) : BaseLtAdapterOneType<InfoBean>(context, list, item_layout的id) {
override fun setData(v: View, b: InfoBean, i: Int) {
v.tvTitle.text=b.title//直接使用item的view内的id,然后使用bean类的属性赋值,i为position(为了简单写,所以都用了单个字母的简写)
}
}
7.更多api和自定义放在下篇和下下篇文章(点击查看(二)更多实用方法)
该控件已开源,Github地址:https://github.com/ltttttttttttt/ltviews
若有bug可以提出来
转载请带上本文链接,谢谢