Android——SwiperRecyclerView

发布时间 2023-08-31 14:30:16作者: remix_alone

地址:

    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();
    }
}