Step 1. Add the JitPack repository to your build file
Add it in your root settings.gradle at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
Add it in your settings.gradle.kts at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}
Add to pom.xml
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
Add it in your build.sbt at the end of resolvers:
resolvers += "jitpack" at "https://jitpack.io"
Add it in your project.clj at the end of repositories:
:repositories [["jitpack" "https://jitpack.io"]]
Step 2. Add the dependency
dependencies {
implementation 'com.github.ludeyuan:RefreshLoadRecyclerView:-SNAPSHOT'
}
dependencies {
implementation("com.github.ludeyuan:RefreshLoadRecyclerView:-SNAPSHOT")
}
<dependency>
<groupId>com.github.ludeyuan</groupId>
<artifactId>RefreshLoadRecyclerView</artifactId>
<version>-SNAPSHOT</version>
</dependency>
libraryDependencies += "com.github.ludeyuan" % "RefreshLoadRecyclerView" % "-SNAPSHOT"
:dependencies [[com.github.ludeyuan/RefreshLoadRecyclerView "-SNAPSHOT"]]
#主要的功能: 1、下拉刷新;(参考:https://github.com/changjiashuai/PullToRefreshLayout;
2、上拉加载(参考:https://github.com/CymChad/BaseRecyclerViewAdapterHelper);
3、滑动删除;
#说明: 下拉刷新通过PullToRefreshLayout.OnRefreshListener,上拉加载通过BaseQuickAdapter.RequestLoadMoreListener, 滑动删除通过SwipeMenuCreator。 需要注意下,RecyclerView中的Adapter需要BaseQuickAdapter,DemoHolder继承DemoHolder;如果使用系统的Adapter 就不会有加载更多的功能;
#效果图
#使用步骤 ##导入项目(Android Studio) allprojects { repositories { ... maven { url "https://jitpack.io" } } }
dependencies {
compile 'com.github.ludeyuan:RefreshLoadRecyclerView:2.2'
}
##配置代码 1、xml
```
<ldy.com.baserecyclerview.refresh.PullToRefreshLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:orientation="vertical">
<ldy.com.baserecyclerview.recyclerview.SwipeMenuRecyclerView
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ldy.com.baserecyclerview.refresh.PullToRefreshLayout>
```
2、设置下拉刷新
```
mSwipeRefreshLayout.setOnRefreshListener(new PullToRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
//执行刷新的事件,并在刷新完成后调用mSwipeRefreshLayout.endRefresh();
});
```
3、自定义刷新的头部 a、自定义头部类A(参考SmallHeaderView),教程BaseHeaderView;在begin()和end()的方法中实现动画的开始和结束; b、自定义A必须继承RelativeLayout; c、定义布局B(参考small_header_view.xml),在布局中引用类A; d、在PullToRefreshLayout的引用文件中引入布局B,参考activity_main.xml
4、设置上拉加载
```
mAdapter.openLoadAnimation();
mAdapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener(){
@Override
public void onLoadMoreRequested() {
//执行加载更多的操作
...app-yingyongbao-release.apk
//加载完成后调用下面的方法
mAdapter.addData(lists);
mAdapter.notifyDataChangedAfterLoadMore(true);
}
});
mAdapter.openLoadMore(lists.size(),true);
```
5、设置滑动删除
```
//设置滑动后出现的菜单
mAdapter.setSwipeMenuCreator(new SwipeMenuCreator() {
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
int width = getResources().getDimensionPixelSize(R.dimen.item_height);
// MATCH_PARENT 自适应高度,保持和内容一样高;也可以指定菜单具体高度,也可以用WRAP_CONTENT。
int height = ViewGroup.LayoutParams.MATCH_PARENT;
// 添加右侧的,如果不添加,则右侧不会出现菜单。
{
SwipeMenuItem deleteItem = new SwipeMenuItem(MainActivity.this)
.setBackgroundColor(Color.GRAY)
.setText("取消收藏") // 文字,还可以设置文字颜色,大小等。。
.setTextColor(Color.WHITE)
.setWidth(width)
.setHeight(height);
swipeRightMenu.addMenuItem(deleteItem);// 添加一个按钮到右侧侧菜单。
}
//左侧不添加,就不会出现
});
//设置点击
mAdapter.setSwipeMenuItemClickListener(new OnSwipeMenuItemClickListener() {
/**
* Item的菜单被点击的时候调用。
* @param closeable closeable. 用来关闭菜单。
* @param adapterPosition adapterPosition. 这个菜单所在的item在Adapter中position。
* @param menuPosition menuPosition. 这个菜单的position。比如你为某个Item创建了2个MenuItem,那么这个position可能是是 0、1,
* @param direction 如果是左侧菜单,值是:SwipeMenuRecyclerView#LEFT_DIRECTION,如果是右侧菜单,值是:SwipeMenuRecyclerView#RIGHT_DIRECTION.
*/
@Override
public void onItemClick(Closeable closeable, int adapterPosition, int menuPosition, int direction) {
closeable.smoothCloseMenu();// 关闭被点击的菜单。
if (direction == SwipeMenuRecyclerView.RIGHT_DIRECTION) {
Toast.makeText(MainActivity.this, "list第" + adapterPosition + "; 右侧菜单第" + menuPosition, Toast.LENGTH_SHORT).show();
} else if (direction == SwipeMenuRecyclerView.LEFT_DIRECTION) {
Toast.makeText(MainActivity.this, "list第" + adapterPosition + "; 左侧菜单第" + menuPosition, Toast.LENGTH_SHORT).show();
}
// TODO 如果是删除:推荐调用Adapter.notifyItemRemoved(position),不推荐Adapter.notifyDataSetChanged();
if (menuPosition == 0) {// 删除按钮被点击。
mLists.remove(adapterPosition);
mAdapter.notifyItemRemoved(adapterPosition);
}
});
```
注意:在onCreateDefViewHolder中,获取View的时候,要把viewType带上,不然会导致不能划出菜单
View view = getItemView(R.layout.news_item,parent,viewType);