Android 侧滑按钮的实现代码

Android侧滑按钮效果如下所示:

Android 侧滑按钮的实现代码_第1张图片

导入闭包

将以下语句倒入目录下build.gradle文件内

 implementation 'com.github.WangcWj:WeSwipe:1.0.2'
 implementation 'cn.wang.we:network:1.0.0'

将以下语句倒入项目build.gradle文件内

创建RecyclerView子项布局文件

效果描述

整体效果图,因为使用RelativeLayout布局的缘故,将侧滑按钮给覆盖了

Android 侧滑按钮的实现代码_第2张图片

我们接下来选中侧滑按钮,由此我们可以看见按钮的位置

Android 侧滑按钮的实现代码_第3张图片

将侧滑按钮释放出来,看一下效果

Android 侧滑按钮的实现代码_第4张图片

布局代码



    
    
    
        
        
            
            
        
        
        
            

            
        
        
            
            
        
    

创建RecyclerView适配器

描述

使用第三方API轮子时,不能像当初我们建立适配器一样继承一个RecyclerView.Adapter,而要继承WeSwipeProxyAdapter抽象类
我们一般根据需求需要实现以下三个方法

 @Override
            public float getSwipeWidth() {
             //侧滑按钮的宽度
            }
            @Override
            public View needSwipeLayout() {
            //子项布局文件的最外层Layout
            }
            @Override
            public View onScreenView() {
             //子项布局文件的最外层Layout
            }

子项点击事件

//创建点击事件接口函数
public interface ParkingOnClick{
            void OnClickListener(View view,int Position);
        }

//点击事件调用
public void setOnclick(ParkingOnClick onclick) {
            this.onClick = onclick;
        }

//引入布局View中
return new ViewHolder(view,onClick);

//内部类实现点击事件
class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener

//构造函数
public ViewHolder(@NonNull View itemView,ParkingOnClick Listener)
this.Listener = Listener;

//点击事件外露
@Override
            public void onClick(View v) {
                if (Listener != null) {
                    Listener.OnClickListener(v, getPosition());
                }
            }

适配器代码

public class ParkingAdapter  extends WeSwipeProxyAdapter {
        List data = new ArrayList<>(  );
        private ParkingOnClick onClick;
        public ParkingAdapter(List data ){
            this.data = data;
        }
        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from( parent.getContext() ).inflate( R.layout.parking_item,parent,false );
            return new ViewHolder(view,onClick);
        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
            ParkingData bookingData = data.get(position);
            holder.BigPlace.setText(bookingData.getBigPlace());
            holder.SmallPlace.setText(bookingData.getSmallPlace());
            holder.ParkingNumber.setText(bookingData.getParkingNumber() + "");
            holder.Distance.setText(bookingData.getDistance());
             holder.SideText.setOnClickListener( new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.d( "Da",1+"" );
                    if (onClick != null){
                        onClick.OnClickListener( v,position );
                    }
                }
            } );
        public int getItemCount() {
            return data.size();
        class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,WeSwipeHelper.SwipeLayoutTypeCallBack
        {
            private TextView BigPlace,SmallPlace,Distance,ParkingNumber,SideText;
            private LinearLayout SideLayout;
            private ParkingOnClick Listener;
            public ViewHolder(@NonNull View itemView,ParkingOnClick Listener) {
                super( itemView );
                this.Listener = Listener;
                BigPlace = itemView.findViewById( R.id.SimplePlace );
                SmallPlace = itemView.findViewById( R.id.detailPlace );
                Distance = itemView.findViewById( R.id.ParkingDistance );
                ParkingNumber = itemView.findViewById( R.id.ParkingNumber );
                SideText = itemView.findViewById( R.id.SideText );
                SideLayout = itemView.findViewById( R.id.SideLayout );
            }
            @Override
            public float getSwipeWidth() {
                return SideText.getWidth();
            public View needSwipeLayout() {
                return SideLayout;
            public View onScreenView() {
            public void onClick(View v) {
                if (Listener != null) {
                    Listener.OnClickListener(v, getPosition());
        //回调接口
        public interface ParkingOnClick{
            void OnClickListener(View view,int Position);
        //点击事件
        public void setOnclick(ParkingOnClick onclick) {
            this.onClick = onclick;
}

应用

解析xml数据

private void InitData(){
        String[] parkingArray = getResources().getStringArray(R.array.parking);
        for (int i = 0; i  
 

绑定

WeSwipe.attach(ParkingRecycler);

private void InitRecycler(){
        LinearLayoutManager manager = new LinearLayoutManager(this);
        ParkingRecycler.setLayoutManager(manager);
        adapter = new ParkingAdapter(dataList);
        ParkingRecycler.setAdapter(adapter);
        WeSwipe.attach(ParkingRecycler);
    }

点击事件引用

adapter.setOnclick(new ParkingAdapter.ParkingOnClick() {
            @Override
            public void OnClickListener(View view, int Position) {
               //do anything...
            }
        });

原作者GitHub项目地址

 https://github.com/WangcWj/SideslippingDemo

到此这篇关于Android 侧滑按钮的文章就介绍到这了,更多相关android 侧滑按钮内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(Android 侧滑按钮的实现代码)