Java源码示例:com.yanzhenjie.recyclerview.swipe.SwipeMenuItem
示例1
@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(mContext)
// .setBackgroundDrawable(R.drawable.selector_red)
// .setImage(R.mipmap.ic_action_delete)
.setBackgroundColor(Color.parseColor("#ff6e40")).setText(getString(R.string.delete)) // 文字,还可以设置文字颜色,大小等。。
.setTextColor(Color.WHITE).setWidth(width).setHeight(height);
swipeRightMenu.addMenuItem(deleteItem);// 添加一个按钮到右侧侧菜单。
SwipeMenuItem addItem = new SwipeMenuItem(mContext)
// .setBackgroundDrawable(R.drawable.selector_green)
.setBackgroundColor(Color.parseColor("#5af158")).setText(getString(R.string.edit)).setTextColor(Color.WHITE).setWidth(width).setHeight(height);
swipeRightMenu.addMenuItem(addItem); // 添加一个按钮到右侧菜单。
}
}
示例2
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
int width = getResources().getDimensionPixelSize(R.dimen.dp_70);
// 1. MATCH_PARENT 自适应高度,保持和Item一样高;
// 2. 指定具体的高,比如80;
// 3. WRAP_CONTENT,自身高度,不推荐;
int height = ViewGroup.LayoutParams.MATCH_PARENT;
SwipeMenuItem addItem = new SwipeMenuItem(getContext())
.setBackground(R.drawable.selector_green)
.setImage(R.mipmap.ic_action_add)
.setWidth(width)
.setHeight(height);
swipeLeftMenu.addMenuItem(addItem); // 添加菜单到左侧。
SwipeMenuItem closeItem = new SwipeMenuItem(getContext())
.setBackground(R.drawable.selector_green)
.setImage(R.mipmap.ic_action_close)
.setWidth(width)
.setHeight(height);
swipeRightMenu.addMenuItem(closeItem); // 添加菜单到右侧。
}
示例3
private void initView() {
swiperefreshlayout.setColorSchemeColors(getResources().getColor(R.color.red_normal),
getResources().getColor(R.color.green_normal),
getResources().getColor(R.color.purple_normal));
swiperefreshlayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
int nextInt = new Random().nextInt(10);
homePresenter.getMeiziData(nextInt,20);
}
});
swipeMenuRecyclerView.setLayoutManager(new GridLayoutManager(activity, 2));
SwipeMenuCreator swipeMenuCreator = new SwipeMenuCreator() {
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
swipeRightMenu.setOrientation(SwipeMenu.VERTICAL);
SwipeMenuItem swipeMenuItem = new SwipeMenuItem(activity)
.setBackgroundColor(R.color.colorPrimary)
.setImage(android.R.drawable.btn_star_big_off)
.setText("收藏")
.setTextColor(Color.WHITE)
.setWidth(100)
.setHeight(0)
.setWeight(1);
swipeRightMenu.addMenuItem(swipeMenuItem);
}
};
ArrayList<String> mDataList = new ArrayList<>();
for (int i = 0; i < 30; i++) {
mDataList.add("我是第" + i + "个菜单");
}
MenuVerticalAdapter menuVerticalAdapter = new MenuVerticalAdapter(mDataList);
menuVerticalAdapter.setOnItemClickListener(onItemClickListener);
swipeMenuRecyclerView.setSwipeMenuCreator(swipeMenuCreator);
swipeMenuRecyclerView.setSwipeMenuItemClickListener(menuItemClickListener);
}
示例4
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
if (viewType == GroupAdapter.VIEW_TYPE_NON_STICKY) {
int width = getResources().getDimensionPixelSize(R.dimen.dp_70);
// 1. MATCH_PARENT 自适应高度,保持和Item一样高;
// 2. 指定具体的高,比如80;
// 3. WRAP_CONTENT,自身高度,不推荐;
int height = ViewGroup.LayoutParams.MATCH_PARENT;
SwipeMenuItem closeItem = new SwipeMenuItem(MenuActivity.this)
.setBackground(R.drawable.selector_purple)
.setImage(R.mipmap.ic_action_close)
.setWidth(width)
.setHeight(height);
swipeLeftMenu.addMenuItem(closeItem); // 添加菜单到左侧。
swipeRightMenu.addMenuItem(closeItem); // 添加菜单到右侧。
SwipeMenuItem addItem = new SwipeMenuItem(MenuActivity.this)
.setBackground(R.drawable.selector_green)
.setText("添加")
.setTextColor(Color.WHITE)
.setWidth(width)
.setHeight(height);
swipeLeftMenu.addMenuItem(addItem); // 添加菜单到左侧。
swipeRightMenu.addMenuItem(addItem); // 添加菜单到右侧。
}
}
示例5
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
int width = getResources().getDimensionPixelSize(R.dimen.dp_70);
// 1. MATCH_PARENT 自适应高度,保持和Item一样高;
// 2. 指定具体的高,比如80;
// 3. WRAP_CONTENT,自身高度,不推荐;
int height = ViewGroup.LayoutParams.MATCH_PARENT;
// 因为左边要DrawerLayout的侧滑,所以不添加左侧菜单,添加后DrawerLayout将滑不动,但是菜单可以滑动。
// 只添加Item右侧的菜单。
{
SwipeMenuItem closeItem = new SwipeMenuItem(DrawerActivity.this)
.setBackground(R.drawable.selector_purple)
.setImage(R.mipmap.ic_action_close)
.setWidth(width)
.setHeight(height);
swipeRightMenu.addMenuItem(closeItem); // 添加菜单到左侧。
SwipeMenuItem addItem = new SwipeMenuItem(DrawerActivity.this)
.setBackground(R.drawable.selector_green)
.setText("添加")
.setTextColor(Color.WHITE)
.setWidth(width)
.setHeight(height);
swipeRightMenu.addMenuItem(addItem); // 添加菜单到左侧。
}
}
示例6
/**
* swipeRecycleView处理
*/
private void showSwipeRecycleView() {
//初始化自定义诗词列表
poetryDbList = LitePal.findAll(PoetryDb.class);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
ownPoetryAdapter = new OwnPoetryAdapter(poetryDbList);
//获取手机屏幕高度
DisplayMetrics dm = getResources().getDisplayMetrics();
int width = dm.widthPixels;
recyclerView.addItemDecoration(new DefaultItemDecoration(getResources().getColor(R.color.gray),width,1));
//滑动菜单
SwipeMenuCreator mSwipeMenuCreator = new SwipeMenuCreator() {
@Override
public void onCreateMenu(SwipeMenu swipeLeftMenu, SwipeMenu swipeRightMenu, int viewType) {
int height = ViewGroup.LayoutParams.MATCH_PARENT;
SwipeMenuItem editItem = new SwipeMenuItem(PoetryActivity.this)
.setText("编辑")
.setWidth(200)
.setHeight(height)
.setTextSize(16)
.setBackground(R.color.bluishWhite);
SwipeMenuItem deleteItem = new SwipeMenuItem(PoetryActivity.this)
.setText("删除")
.setTextColorResource(R.color.qmui_config_color_white)
.setWidth(200)
.setHeight(height)
.setTextSize(16)
.setBackground(R.color.qmui_config_color_red);
swipeLeftMenu.addMenuItem(editItem);
swipeRightMenu.addMenuItem(deleteItem);
}
};
//设置监听
SwipeMenuItemClickListener mMenuItemClickListener = new SwipeMenuItemClickListener() {
@Override
public void onItemClick(SwipeMenuBridge menuBridge) {
menuBridge.closeMenu();
// 左侧还是右侧菜单。
int direction = menuBridge.getDirection();
// RecyclerView的Item的position。
int adapterPosition = menuBridge.getAdapterPosition();
// 菜单在RecyclerView的Item中的Position。
int menuPosition = menuBridge.getPosition();
Log.d(TAG, "onItemClick: 位置"+adapterPosition);
if (direction == SwipeMenuRecyclerView.LEFT_DIRECTION) {
Intent intent = new Intent(PoetryActivity.this, AddAndEditPoetryActivity.class);
intent.putExtra("addOrEdit","edit");
int editId = poetryDbList.get(adapterPosition).getPoetryDb_id();
intent.putExtra("editId",editId+"");
startActivity(intent);
} else if (direction == SwipeMenuRecyclerView.RIGHT_DIRECTION) {
final boolean[] isCancle = {false};
Handler handler = new Handler();
Snackbar.make(recyclerView,"正在删除该条诗词数据",Snackbar.LENGTH_SHORT)
.setAction("取消", new View.OnClickListener() {
@Override
public void onClick(View v) {
isCancle[0] = true;
Toast.makeText(PoetryActivity.this,"已取消删除",Toast.LENGTH_SHORT).show();
}
}).show();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (!isCancle[0]) {
int deleteId = poetryDbList.get(adapterPosition).getPoetryDb_id();
LitePal.deleteAll(PoetryDb.class, "poetryDb_id = ?", String.valueOf(deleteId));
poetryDbList.remove(adapterPosition);
ownPoetryAdapter.notifyItemRemoved(adapterPosition);
}
}
},1800);
}
}
};
recyclerView.setSwipeMenuCreator(mSwipeMenuCreator);
recyclerView.setSwipeMenuItemClickListener(mMenuItemClickListener);
recyclerView.setAdapter(ownPoetryAdapter);
}