步骤:
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的更新