采用PullToRefreshScrollView + SwipeMenuRecyclerView 的组合
全局变量
private LinearLayoutManager layoutManager;
首先进行上拉下拉进行配置
PullToRefreshScrollView.setMode(PullToRefreshBase.Mode.BOTH);
表示上下拉动都会产生动作
然后设置OnRefreshListener监听,使用PullToRefreshBase.OnRefreshListener2<ScrollView>即可监听双向拉动
onPullDownToRefresh:下拉刷新
onPullUpToRefresh:上拉加载更多
备注:重点!在事件加载完成后使用完成语句来结束刷新动作
onRefreshComplete();
侧向滑动初始化
layoutManager = new LinearLayoutManager(activity);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
SwipeMenuRecyclerView.setLayoutManager(layoutManager);
SwipeMenuRecyclerView.setHasFixedSize(true);
SwipeMenuRecyclerView.setItemAnimator(new DefaultItemAnimator());// 设置Item默认动画,加也行,不加也行。
SwipeMenuRecyclerView.setLayoutManager(new WrapContentLinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false));
在需要的地方使用setSwipeMenuCreator来加载侧滑删除功能
SwipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator);
自定义的菜单创建器
/**
* 菜单创建器。在Item要创建菜单的时候调用。
*/
private SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
int width = getResources().getDimensionPixelSize(R.dimen.dimen_60_dp);
// MATCH_PARENT 自适应高度,保持和内容一样高;也可以指定菜单具体高度,也可以用WRAP_CONTENT。
int height = ViewGroup.LayoutParams.MATCH_PARENT;
// 添加右侧的,如果不添加,则右侧不会出现菜单。
{
SwipeMenuItem deleteItem = new SwipeMenuItem(activity)
.setBackground(R.drawable.selector_delete)
//.setBackgroundDrawable(R.drawable.selector_delete)
.setText("删除") // 文字,还可以设置文字颜色,大小等。。
.setTextSize(16)
.setTextColor(Color.WHITE)
.setWidth(width)
.setHeight(height);
swipeRightMenu.addMenuItem(deleteItem);// 添加一个按钮到右侧侧菜单。
}
}
};
其中selector_delete.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/red_delete" android:state_pressed="true" />
<item android:drawable="@color/red_delete" />
</selector>
备注:red_delete色值#e85237
如果不需要加载侧边滑动那么可以自定义不创建菜单
private SwipeMenuCreator noswipeMenuCreator = new SwipeMenuCreator() {
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
}
};
SwipeMenuRecyclerView设置点击事件的方法
SwipeMenuRecyclerView.setSwipeMenuItemClickListener(onSwipeMenuItemClickListener);
private SwipeMenuItemClickListener onSwipeMenuItemClickListener = new SwipeMenuItemClickListener() {
@Override
public void onItemClick(SwipeMenuBridge menuBridge) {
//position 的获取方法 menuBridge.getPosition()
}
};