# RefreshLayout
**Repository Path**: lf_gitee/RefreshLayout
## Basic Information
- **Project Name**: RefreshLayout
- **Description**: 通用列表组件,让你半小时以内完成一个列表界面
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2019-10-25
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# RefreshLayout
通用列表组件,让你半小时以内完成一个列表界面
## 样式效果如图

## 目前
* 以RecyclerView作为列表控件,通过layoutManager切换布局形式
* 集成了失败界面展示,没有数据界面,可以继承此类实现自己的失败界面、无数据界面等
* 可以继承RefreshLayout样式设置自己应用的默认的样式及属性
* 下拉刷新,加载更多
* 悬浮按钮
* 万能适配器 适配器添加header和footer
* 下拉刷新采用的谷歌的SwipeRefreshLayout
* 可以继承RefreshLayout样式设置自己应用的默认的样式及属性
* 提供一个SimpleRefreshLayout,提供一些默认的样式及属性
## 计划
* 支持切换下拉刷新控件
* 控件上添加header 上滑隐藏header,下滑显示header
* 添加更多预置模板和样式
更多需求欢迎提建议
# 使用
## xml
```xml
```
## activity初始化
```java
SimpleRefreshLayout refresh;
RBAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
refresh = (SimpleRefreshLayout) findViewById(R.id.refresh);
//SimpleRefreshLayout特有的方法需放在链式调用的前面
adapter = new RBAdapter(this)
.layout(R.layout.item_main_list)
.bindViewData(this::bindViewData);
refresh.emptyText("暂无数据")
.emptyImgRes(R.drawable.message_default)
.adapter(adapter)
.refreshEnable(true)
.refresh(() -> load(true))
.loadMore(() -> load(false))
.doRefresh();
ImageView imageView = new ImageView(this);
imageView.setBackgroundDrawable(getResources().getDrawable(R.drawable.img_no_message));
adapter.addHeaderView(imageView);
}
public void bindViewData(Holder holder, String item) {
holder.setText(R.id.text, item);
}
```
## 带位置参数的adapter
```java
new SPAdapter(this)
.layout(android.R.layout.simple_list_item_1)
.bindPositionData(this::bindViewData);
public void bindViewData(Holder holder, String item, int p) {
holder.setText(android.R.id.text1, item);
}
```
## load()请求
```java
private void load(final boolean isrefresh) {
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
try {
if (isrefresh)
Thread.sleep(2000);
else
Thread.sleep(500);
} catch (Exception e) {
}
runOnUiThread(new Runnable() {
@Override
public void run() {
List list = new ArrayList();
for (int i = 0; i < 20; i++) {
list.add(" " + i);
}
if (isrefresh)
refresh.refreshComplete(list);
else
refresh.loadMoreComplete(list);
//请求失败调用 refresh.loadFailure();
}
});
}
}).start();
}
```
## 继承RefreshLayout实现自己布局样式
``` java
public class SimpleRefreshLayout extends RefreshLayout {
//SimpleRefreshLayout mSimpleRefreshLayout;
public SimpleRefreshLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//mSimpleRefreshLayout = new SimpleRefreshLayout(context);
}
public SimpleRefreshLayout setNoDataLableText(String str) {
//mSimpleRefreshLayout.setNoDataLableText(str);
return this;
}
public SimpleRefreshLayout setNoDataImgRes(int res) {
//mSimpleRefreshLayout.setNoDataImgRes(res);
return this;
}
```
# 依赖添加
## maven
```xml
com.gengqiquan
refreshlayout
1.1.8
pom
```
## gralde
```
compile 'com.gengqiquan:refreshlayout:1.1.8'
```