https://github.com/wuhenzhizao/android-mvvm-recyclerview
RecyclerView with sticky header, swipe menu, drag.
https://github.com/wuhenzhizao/android-mvvm-recyclerview
advanced android drag mvvm pull sticky swipe
Last synced: 2 months ago
JSON representation
RecyclerView with sticky header, swipe menu, drag.
- Host: GitHub
- URL: https://github.com/wuhenzhizao/android-mvvm-recyclerview
- Owner: wuhenzhizao
- Created: 2017-09-08T07:05:38.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2017-11-10T02:15:07.000Z (over 7 years ago)
- Last Synced: 2025-03-27T09:21:22.656Z (3 months ago)
- Topics: advanced, android, drag, mvvm, pull, sticky, swipe
- Language: Java
- Homepage:
- Size: 7.29 MB
- Stars: 11
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Advanced-MVVM-Recyclerview
基于MVVM架构的RecyclerView,更少的代码,更低的耦合性支持的功能
- Sticky Header效果;实现RecyclerView Item顶部悬浮,支持多种Header样式;
- Swipe Menu效果:横向滑动菜单,支持左右滑动两种操作;
- Drag 效果;
- 下拉刷新,上拉加载更多;# Demo
[Demo下载](https://www.pgyer.com/ebTo)- **StickyHeader**
![]()
![]()
![]()
- **SwipeMenu**
![]()
![]()
![]()
- **Drag**
![]()
# Usage
**本项目基于MVVM架构,使用了[android-mvvm-framwork](https://github.com/wuhenzhizao/android-mvvm-framwork)框架,mvvm部分代码请参考该框架,下面主要讲RecyclerView部分的用法**> 通过配置来启用不同的功能
```xml
// 自定义Refresh Header
// 自定义Loader Footer
// 普通recyclerView
// stickyHeader效果
// swipeMenu效果
// drag效果
/>```
StickyHeader,支持多样式
========================> 布局文件
```xml
```
> 绑定Stick Header点击监听
```java
RecyclerViewProxy proxy = new RecyclerViewProxy();
proxy.setItemHeaderClickListener(new OnItemHeaderClickListener() {
@Override
public void onHeaderClick(int position, long headerId) {
...
}
});
```> 数据bean继承自StickyViewBean
SwipeMenu
=====================> 布局文件
```xml
```
> RecyclerView Item布局
```
...
```
Drag
========================> 布局文件
```xml
```
> 绑定Drag事件监听
```java
RecyclerViewProxy proxy = new RecyclerViewProxy();
proxy.setItemDragListener(new OnItemDragListener() {
@Override
public void onDrag(int fromPosition, int toPosition) {
Collections.swap(itemList, fromPosition, toPosition);
}
});
```Pull Refresh And Load More
==========================
[AdvancedRecyclerView](library/src/main/java/com/wuhenzhizao/view/AdvancedRecyclerView.java)集成了[StickyHeader],[SwipeMenu],[Drag],[上拉刷新,下拉加载更多],上拉刷新,下拉加载更多通过[RefreshLayoutProxy](library/src/main/java/com/wuhenzhizao/view/RecyclerViewProxy.java)实现```java
RecyclerViewProxy {
...
// 设置下拉刷新监听
public void setPullRefreshListener(OnPullRefreshListener pullRefreshListener);
// 设置上拉加载更多监听
public void setLoadMoreListener(OnLoadMoreListener loadMoreListener);
// 同时监听下拉刷新和上拉加载更多
public void setRefreshOrLoadMoreListener(OnRefreshOrLoadMoreListener refreshOrLoadMoreListener);
// 更详细的监听,可以实现效果
public void setMultiChangedListener(OnMultiChangedListener multiChangedListener);
// 设置是否启用下拉刷新
public void setEnableRefresh(boolean enableRefresh);
// 设置是否启用上拉加载更多
public void setEnableLoadMore(boolean enableLoadMore);
// 设置是否启用内容视图拖动效果
public void setEnableHeaderTranslationContent(boolean enableHeaderTranslationContent);
// 设置是否启用内容视图拖动效果
public void setEnableFooterTranslationContent(boolean enableFooterTranslationContent);
// 设置是否启用越界回弹
public void setEnableOverScrollBounce(boolean enableOverScrollBounce);
// 设置是否开启纯滚动模式
public void setEnablePureScrollMode(boolean enablePureScrollMode);
// 设置是否在列表滚动到底部时自动加载更多
public void setEnableAutoLoadMore(boolean enableAutoLoadMore);
// 设置是否在加载更多完成之后滚动内容显示新数据
public void setEnableScrollContentWhenLoaded(boolean enableScrollContentWhenLoaded);
// 设置在内容不满一页的时候,是否可以上拉加载更多
public void setEnableLoadMoreWhenContentNotFull(boolean enableLoadMoreWhenContentNotFull);
// 设置是否开启在刷新时禁止操作内容视图
public void setDisableContentWhenRefresh(boolean disableContentWhenRefresh);
// 设置是否开启在加载时禁止操作内容视图
public void setDisableContentWhenLoading(boolean disableContentWhenLoading);
}
```# TODO
- [x] 代码重构以实现更良好的封装
- [ ] 增加更多的效果:indexable、expadable等# Thanks
- [AndroidMVVM](https://github.com/gomeos/AndroidMVVM)
- [AndroidSwipeLayout](https://github.com/daimajia/AndroidSwipeLayout)
- [header-decor](https://github.com/edubarr/header-decor)
- [SmartRefreshLayout](https://github.com/scwang90/SmartRefreshLayout)