view 的通用的左滑 删除

步骤:

1.

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

2.

compile 'com.github.mcxtzhang:SwipeDelMenuLayout:V1.3.0'//通用的 view的左滑删除

3.使用

1.布局:用作viewgroup 作为跟布局

<?xml version="1.0" encoding="utf-8"?>
<com.mcxtzhang.swipemenulib.SwipeMenuLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="50dp"
    android:clickable="true"
    android:layout_marginTop="1dp"
    android:background="@color/white">

        <RelativeLayout
            android:id="@+id/relative_client_list"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <RelativeLayout
                android:id="@+id/relative_layout_call_item_client_list"
                android:layout_width="80dp"
                android:layout_height="match_parent"
                android:layout_centerVertical="true"
                android:layout_alignParentRight="true"
                >
                <ImageView
                    android:id="@+id/image_view_call_item_client_list"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_centerVertical="true"
                    android:layout_alignParentRight="true"
                    android:layout_marginRight="@dimen/normal_margin"
                    android:src="@mipmap/phone"/>
            </RelativeLayout>
            <com.shenlei.servicemoneynew.view.CircleImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_centerVertical="true"
                android:layout_marginLeft="10dp"
                app:civ_border_color="#ccc"
                app:civ_border_width="1dp"
                android:id="@+id/image_view_item_client_list"/>
            <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_toRightOf="@id/image_view_item_client_list"
                android:layout_toLeftOf="@id/relative_layout_call_item_client_list"
                android:layout_centerVertical="true"
                android:layout_marginLeft="@dimen/small_margin"
                android:layout_marginRight="@dimen/small_margin">

                <LinearLayout
                    android:id="@+id/linear_client_up"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <TextView
                        android:id="@+id/text_view_name_item_client_list"
                        android:gravity="center_vertical|left"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:layout_marginLeft="@dimen/normal_margin"
                        android:text="爱你的苏"
                        android:textColor="@color/common_color_black_text"
                        android:textSize="@dimen/common_normal_text_size"
                        android:layout_toLeftOf="@+id/text_view_number_item_client_list"
                        android:layout_marginTop="@dimen/small_margin"
                        android:layout_marginRight="@dimen/small_margin"/>
                    <TextView
                        android:id="@+id/text_view_number_item_client_list"
                        android:gravity="center_vertical|left"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="1"
                        android:layout_marginTop="@dimen/small_margin"
                        android:text="151389333333"
                        android:textColor="@color/common_color_black_text"
                        android:textSize="@dimen/common_normal_text_size"/>
                </LinearLayout>

                <TextView
                    android:id="@+id/text_view_adress_item_client_list"
                    android:layout_below="@id/linear_client_up"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_alignLeft="@id/linear_client_up"
                    android:layout_marginLeft="@dimen/normal_margin"
                    android:text="地址"
                    android:layout_centerVertical="true"
                    android:gravity="center_vertical|left"
                    android:layout_marginTop="@dimen/small_margin"
                    android:textColor="@color/common_color_black_text"
                    android:textSize="@dimen/common_small_text_size"/>
            </RelativeLayout>
        </RelativeLayout>

        <TextView
            android:id="@+id/text_delete"
            android:layout_width="70dp"
            android:layout_height="match_parent"
            android:background="#ff0000"
            android:gravity="center"
            android:text="放弃"
            android:textColor="#ffffff"
            android:textSize="@dimen/common_normal_text_size"
            />

</com.mcxtzhang.swipemenulib.SwipeMenuLayout>
 用第三方布局 作为 跟布局

注意的点:

1.clickable 设置为true

2.按钮的点击事件  设置在adapter 中 ,列表的item的点击事件 可以设置 为 占满全屏的 relativelayout 的点击事件

3.

/**删除按钮的点击事件*/
myViewHolder.textViewDelete.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
       finalConvertView1.quickClose();
        data.remove(i);
        notifyDataSetChanged();
    }
});
/**作用相当于是item的点击事件*/
myViewHolder.relativeLayoutTotal.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        ClientResource clientResource = data.get(i);
        App.getInstance().saveClientID(clientResource.getClientId());//保存要跳转的客户的id
        App.getInstance().saveClientName(clientResource.getName());//保存要跳转的客户的客户名
        App.getInstance().saveClientDiscountNumber(clientResource.getDiscountNumber());//保存跳转客户的折扣比`        Intent intent = new Intent(context, ClientDetailActivity.class);
        context.startActivity(intent);//跳转到客户信息页面
    }
});

其中需要注意 : 点击删除 按钮 之后 ,要恢复到 删除按钮未显示的状态


添加:

1.为了达到 删除之后 实时更新的效果 ,一般项目中 需要向后抬 发送 数据

实时的 删除效果 ,需要 用handler来实现 数据的更新

如下 所示 :

commonAdapter = new CommonAdapter<ClientResource>(getActivity(), clientResourceListSea, R.layout.item_client_list_view) {
    @Override
    public void setViewData(ViewHolder holder, ClientResource item, final int position) {

        ImageView imageViewPhone = holder.getView(R.id.image_view_call_item_client_list);//电话标识
        RelativeLayout relativeLayoutPhone = holder.getView(R.id.relative_layout_call_item_client_list);//布局 打电话的布局
        RelativeLayout relativeLayoutTotal = holder.getView(R.id.relative_client_list);//布局的点击事件
        final SwipeMenuLayout swipeMenuLayout= (SwipeMenuLayout) holder.getConvertView();//布局

        TextView textViewDelete = holder.getView(R.id.text_delete);//删除按钮
        textViewDelete.setText("收回");
        textViewDelete.setBackgroundResource(R.color.common_normal_inside_addance);//设置背景颜色
        textViewDelete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                GetCustomerInfoUpdateStateApi api=new GetCustomerInfoUpdateStateApi(new HttpOnNextListener<GetCustomerInfoUpdateStateEntity>() {
                    @Override
                    public void onNext(GetCustomerInfoUpdateStateEntity entity) {
                        if (entity.getSuccess()!=1){
                            App.showToast(entity.getMsg());
                            return;
                        }
                        App.showToast("收回成功");
                        swipeMenuLayout.quickClose();
                        clientResourceListSea.remove(position);
                        Message message = new Message();
                        message.what = 124;
                        message.obj = clientResourceListSea;
                        handler.sendMessage(message);
                    }
                },FragmentClientFragment.this);

                api.setLoginName(userName);
                api.setCustomerId(clientResourceListSea.get(position).getClientId());
                api.setState(0);
                api.setSign(sign);
                HttpManager.getInstance().doHttpDealFragment(api);
            }
        });
通过handler 实现 adapter的更新


猜你喜欢

转载自blog.csdn.net/weixin_37166398/article/details/78712275