左滑删除控件的实现

1.依赖三方类库【左滑控件】【该方式不能与适配框架同时用,用此布局的不用再考虑适配问题】
  compile 'com.daimajia.swipelayout:library:1.2.0'

2. list列表item布局【要求:<com.daimajia.swipe.SwipeLayout> 包裹着两个子布局,第一个子布局是左滑布局,第二个子布局列表item顺序不能反】

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical"

    xmlns:app="http://schemas.android.com/apk/res-auto"

    >

 

   <com.daimajia.swipe.SwipeLayout

       android:id="@+id/swipe"

       android:layout_width="match_parent"

       android:layout_height="wrap_content"

       app:drag_edge="right"

       >

       <LinearLayout

           android:id="@+id/trash"

           android:layout_width="160dp"

           android:layout_height="match_parent"

           android:gravity="center"

           android:orientation="horizontal"

           android:tag="Bottom">

           <TextView

               android:id="@+id/swipe_open"

               android:layout_width="1dp"

               android:layout_height="match_parent"

               android:layout_weight="1"

               android:background="#f55509"

               android:gravity="center"

               android:text="打开"

               android:textColor="@android:color/white"

               android:textSize="20sp" />

 

           <TextView

               android:id="@+id/swipe_delete"

               android:layout_width="1dp"

               android:layout_height="match_parent"

               android:layout_weight="1"

               android:background="@android:color/holo_red_dark"

               android:gravity="center"

               android:text="删除"

               android:textColor="@android:color/white"

               android:textSize="20sp" />

 

       </LinearLayout>

 

       <LinearLayout

           android:layout_width="match_parent"

           android:layout_height="100dp"

           android:background="@android:color/white"

           android:gravity="center_vertical"

           android:orientation="horizontal"

           android:padding="5dp">

 

           <ImageView

               android:layout_width="120dp"

               android:layout_height="80dp"

               android:src="@mipmap/iv_logo" />

 

           <LinearLayout

               android:layout_width="match_parent"

               android:layout_height="wrap_content"

               android:background="@android:color/white"

               android:orientation="vertical"

               android:paddingLeft="5dp">

 

               <TextView

                   android:id="@+id/tv_nickname"

                   android:layout_width="match_parent"

                   android:layout_height="wrap_content"

                   android:textSize="17sp" />

 

               <TextView

                   android:id="@+id/tv_msg"

                   android:layout_width="match_parent"

                   android:layout_height="wrap_content"

                   android:layout_marginTop="5dp"

                   android:textSize="15sp" />

           </LinearLayout>

       </LinearLayout>

</com.daimajia.swipe.SwipeLayout>

</LinearLayout>

 
3.适配器要继承BaseSwipeAdapter,与BaseAdapter有弱微区别,实现如下:

public class MySwipeAdapter extends BaseSwipeAdapter{

    private Context context;

    private ArrayList<HashMap<String,String>> dataList = new ArrayList<HashMap<String, String>>();

    private final String TAG = "MySwipeAdapter";

 

    public MySwipeAdapter(Context context,ArrayList<HashMap<String,String>> dataList){

        this.context = context;

        this.dataList = dataList;

    }

 

    @Override

    public int getSwipeLayoutResourceId(int i) {

        return R.id.swipe;

    }

 

    @Override

    public View generateView(int i, ViewGroup viewGroup) {

        View view = View.inflate(context,R.layout.list_item_layout,null);

        SwipeLayout swipeLayout = (SwipeLayout)view.findViewById(getSwipeLayoutResourceId(i));

 

        // 设置滑动是否可用,默认为true

        swipeLayout.setSwipeEnabled(true);

        // 设置为true,在当前一条item(除侧滑以外部分)点击时,可收回侧滑出来部分,默认为false...

        swipeLayout.setClickToClose(true);

        swipeLayout.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

 

            }

        });

        return view;

    }

 

    @Override

    public void fillValues(int position, View convertView) {

        TextView tvNickName = (TextView) convertView.findViewById(R.id.tv_nickname);

        TextView tvMsg = (TextView) convertView.findViewById(R.id.tv_msg);

        TextView tvSwipeOpen = (TextView) convertView.findViewById(R.id.swipe_open);

        TextView tvSwipeDelete = (TextView) convertView.findViewById(R.id.swipe_delete);

        tvNickName.setText(dataList.get(position).get("NickName"));

        tvMsg.setText(dataList.get(position).get("Msg"));

 

        tvSwipeOpen.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                Toast.makeText(context,"打开",Toast.LENGTH_SHORT).show();

            }

        });

 

        tvSwipeDelete.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {

                Toast.makeText(context,"删除",Toast.LENGTH_SHORT).show();

            }

        });

 

    }

 

    @Override

    public int getCount() {

        return dataList.size();

    }

 

    @Override

    public Object getItem(int i) {

        return dataList.get(i);

    }

 

 

    @Override

    public long getItemId(int i) {

        return i;

    }

}




4.绑定适配器方式不变.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值