史上最好用侧滑布局来自代码家大神的SwipeLayout(基于ViewDragHelper)

1.远程仓库引用或者本地模块引入 

# Usage

### Step 1
#### Gradle

```groovy
dependencies {
    compile 'com.android.support:recyclerview-v7:21.0.0'
    compile 'com.android.support:support-v4:20.+'
    compile "com.daimajia.swipelayout:library:1.2.0@aar"
}
```

#### Maven

```xml
<dependency>
   <groupId>com.google.android</groupId>
   <artifactId>support-v4</artifactId>
   <version>r6</version>
</dependency>
<dependency>
   <groupId>com.google.android</groupId>
   <artifactId>recyclerview-v7</artifactId>
   <version>21.0.0</version>
</dependency>
<dependency>
    <groupId>com.daimajia.swipelayout</groupId>
    <artifactId>library</artifactId>
    <version>1.2.0</version>
    <type>apklib</type>
</dependency>
```

#### Eclipse

[AndroidSwipeLayout-v1.1.8.jar](https://github.com/daimajia/AndroidSwipeLayout/releases/download/v1.1.8/AndroidSwipeLayout-v1.1.8.jar)

### Step 2

**Make sure to use the internal adapter instead of your own!**

[Wiki Usage](https://github.com/daimajia/AndroidSwipeLayout/wiki/usage)

## Wiki

[Go to Wiki](https://github.com/daimajia/AndroidSwipeLayout/wiki)
2. 注意Listview 和Girdview 使用adapter 为继承 
BaseSwipeAdapter

3.Rv 继承的adpater 为

RecyclerSwipeAdapter
4 下面就RV使用的Demo实例
package com.example.testpic.swpedemo;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.daimajia.swipe.SimpleSwipeListener;
import com.daimajia.swipe.SwipeLayout;
import com.daimajia.swipe.adapters.RecyclerSwipeAdapter;
import com.example.testpic.R;
import java.util.List;
/**
 * Created by qundui on 2017/11/24.
 * 注意事项
 * adpter 主要集成 RecyclerSwipeAdapter 不能集成普通的adapter
 */
public class DemoAdapter extends RecyclerSwipeAdapter<DemoAdapter.SimpleViewHolder> {
    Context mContext;
    List<String> madtas;

    public DemoAdapter(List<String> madtas, Context context) {
        this.madtas = madtas;
        mContext = context;
    }
    @Override
    public SimpleViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
        return new SimpleViewHolder(LayoutInflater.from(mContext).inflate(R.layout.rv_items,viewGroup,false));
    }
    @Override
    public void onBindViewHolder(final SimpleViewHolder simpleViewHolder, final int i) {
        simpleViewHolder.tv_data.setText(madtas.get(i));
        simpleViewHolder.mSwipeLayout.setShowMode(SwipeLayout.ShowMode.LayDown);//添加策划模式
        simpleViewHolder.mSwipeLayout.addSwipeListener(new SimpleSwipeListener() {//侧滑监听
            @Override
            public void onOpen(SwipeLayout layout) {
//                //打开策划布局时候的搞事情.......
            }
        });
        simpleViewHolder.mSwipeLayout.setOnDoubleClickListener(new SwipeLayout.DoubleClickListener() {
            @Override
            public void onDoubleClick(SwipeLayout layout, boolean surface) {
                Toast.makeText(mContext, "DoubleClick", Toast.LENGTH_SHORT).show();//双击侧滑布局TODO
            }
        });
        simpleViewHolder.tv_add.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mItemManger.closeAllItems();//关闭策划的布局
            }
        });
        simpleViewHolder.tv_del.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mItemManger.removeShownLayouts(simpleViewHolder.mSwipeLayout);


                madtas.remove(i);
                notifyItemRemoved(i);
                notifyItemRangeChanged(i, madtas.size());
                mItemManger.closeAllItems();//关闭策划的布局
            }
        });
        mItemManger.bind(simpleViewHolder.itemView, i);//绑定条目管理辅助类

    }
    @Override
    public int getItemCount() {
        return madtas.size();
    }
    //获取策划布局的资源id
    @Override
    public int getSwipeLayoutResourceId(int i) {
        return R.id.swipe;
    }
    public class SimpleViewHolder extends RecyclerView.ViewHolder {
        private SwipeLayout mSwipeLayout;
        private TextView tv_data;
        private TextView tv_add;
        private  TextView tv_del;
        public SimpleViewHolder(View itemView) {
            super(itemView);
            mSwipeLayout= (SwipeLayout) itemView.findViewById(R.id.swipe);
            tv_data= (TextView) itemView.findViewById(R.id.tv_data);
            tv_add= (TextView) itemView.findViewById(R.id.tv_add);
            tv_del= (TextView) itemView.findViewById(R.id.tv_del);
        }
    }
}
4.item 布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:swipe="http://schemas.android.com/apk/res-auto"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
    <com.daimajia.swipe.SwipeLayout
        android:id="@+id/swipe"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        swipe:leftEdgeSwipeOffset="0dp"
        swipe:rightEdgeSwipeOffset="0dp">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:text="添加"
                android:id="@+id/tv_add"
                android:background="@color/aliceblue"
                />
            <TextView
                android:layout_width="0dp"
                android:layout_weight="1"
                android:gravity="center_horizontal"
                android:layout_height="wrap_content"
                android:background="@color/aqua"
                android:text="删除"
                android:id="@+id/tv_del"
                />
        </LinearLayout>
        <LinearLayout
            android:layout_width="match_parent"
            android:gravity="center"
            android:layout_height="wrap_content">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/tv_data"
                android:text="data"
                />
        </LinearLayout>
    </com.daimajia.swipe.SwipeLayout>
</LinearLayout>
5 :UI界面使用(主页面布局就一个RV)
package com.example.testpic.swpedemo;

import android.app.Activity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;

import com.daimajia.swipe.util.Attributes;
import com.example.testpic.R;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by gsc on 2017/11/24. jiangnanyizhou (QQ:373654981)
 */
public class Demo2 extends Activity {
    private RecyclerView mRecyclerView;
    private List<String> mdatas=new ArrayList<String>();
    private DemoAdapter mDemoAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.demo2);
        mRecyclerView= (RecyclerView) findViewById(R.id.rv);
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
        mdatas=init(mdatas);
        mDemoAdapter = new DemoAdapter(mdatas, this);
        mRecyclerView.setAdapter(mDemoAdapter);
        mDemoAdapter.setMode(Attributes.Mode.Single);//设置单选模式 和 Single, Multiple; 和多选模式
    }
    private List<String> init(List<String> mdatas) {
        for(int i=0;i<30;i++){
            mdatas.add("item"+(i+1));

        }
        return mdatas;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江南一舟110

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值