Android——SwiperRecyclerView
地址:
implementation 'com.yanzhenjie.recyclerview:x:1.3.2'
使用:
1.SwipeRecyclerView继承于RecyclerView,设置Adapter和基础操作与RecyclerView一致
2. 侧滑菜单
分为:大菜单,左右区域菜单,小菜单
大菜单:SwipeMenuCreator
区域菜单:SwipeMenu
小菜单:SwipeMenuItem
添加菜单操作:
srv.setSwipeMenuCreator(SwipeMenuCreator swipeMenuCreator)
再通过重写swipeMenuCreator的onCreateMenu创建SwipeMenuItem往SwipeMenu添加
小菜单设置:
swipeMenuItem.setImage(); //设置图片
swipeMenuItem.setBackground(int resid);
swipeMenuItem.setHeight(int dimen); // 1. 使用getResource().getDimensionPixelSize(R.dimen.dp_50); 2. 布局子项可以添加padding,height能适配,但margin不行
swipeMenuItem.setWidth(int dimen); // 1. 使用getResource().getDimensionPixelSize(R.dimen.dp_50); 2. 布局子项可以添加padding,height能适配,但margin不行
菜单事件:
srv.setOnItemMenuClickListener(OnItemMenuClickListener oimcl)
// 1. 先关闭 menuBridge.close();
// 2. menuBridge.position menu的position。 adapterPosition,子项position
例子
package com.example.myandroiddemo.activity.materialdesign.swiper_recycler_view; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import android.util.Log; import android.widget.Toast; import com.example.myandroiddemo.R; import com.yanzhenjie.recyclerview.OnItemMenuClickListener; import com.yanzhenjie.recyclerview.SwipeMenu; import com.yanzhenjie.recyclerview.SwipeMenuBridge; import com.yanzhenjie.recyclerview.SwipeMenuCreator; import com.yanzhenjie.recyclerview.SwipeMenuItem; import com.yanzhenjie.recyclerview.SwipeRecyclerView; import java.util.ArrayList; public class SwiperRecyclerViewActivity extends AppCompatActivity implements SwiperRecyclerViewAdapter.OnItemClickListener { private SwipeRecyclerView rv; private ArrayList<String> dataArray; private SwiperRecyclerViewAdapter swiperRecyclerViewAdapter; private static final String TAG = "SwiperRecyclerViewActiv"; // item可以加padding 不可以加maring @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_swiper_recycler_view); rv = findViewById(R.id.srv); // 大菜单,左右菜单,小菜单 rv.setSwipeMenuCreator(new SwipeMenuCreator() { @Override public void onCreateMenu(SwipeMenu leftMenu, SwipeMenu rightMenu, int position) { SwipeMenuItem swipeMenuItem = new SwipeMenuItem(SwiperRecyclerViewActivity.this); swipeMenuItem.setImage(R.drawable.ic_action_delete); swipeMenuItem.setBackground(R.color.red); swipeMenuItem.setHeight(getResources().getDimensionPixelSize(R.dimen.dp_50)); swipeMenuItem.setWidth(getResources().getDimensionPixelSize(R.dimen.dp_50)); rightMenu.addMenuItem(swipeMenuItem); } }); rv.setOnItemMenuClickListener(new OnItemMenuClickListener() { @Override public void onItemClick(SwipeMenuBridge menuBridge, int adapterPosition) { // menuBridge.position menu的position。 adapterPosition,子项position menuBridge.closeMenu(); switch ( menuBridge.getPosition() ){ case 0: dataArray.remove(adapterPosition); swiperRecyclerViewAdapter.notifyDataSetChanged(); break; } } }); dataArray = new ArrayList<>(); for (int i = 0; i < 100; i++) {dataArray.add(i+"");} swiperRecyclerViewAdapter = new SwiperRecyclerViewAdapter(this,dataArray); swiperRecyclerViewAdapter.setOnItemClickListener(this); rv.setAdapter(swiperRecyclerViewAdapter); rv.setLayoutManager(new LinearLayoutManager(this, RecyclerView.VERTICAL,false)); } @Override public void onItemClick(int position) { Toast.makeText(this,"这是第"+position+"项!",Toast.LENGTH_SHORT).show(); } }