左滑删除控件的实现

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.绑定适配器方式不变.

猜你喜欢

转载自blog.csdn.net/Mr__dingding/article/details/86239759