https://github.com/anzaizai/EasySwipeMenuLayout
This is the least intrusive way to the original code after seeing a lot of custom view left sliding deletion
layout
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <data> </data> <com.dtrt.preventpro_irontower.view.weiget.swipe.EasySwipeMenuLayout android:id="@ + id/swipeItem" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_vertical" app:contentView="@ + id/content" app:rightMenuView="@ + id/tv_delete"> <LinearLayout android:id="@ + id/content" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:orientation="vertical"> <com.allen.library.SuperTextView android:id="@ + id/stv_name" android:layout_width="match_parent" android:layout_height="@dimen/dp_45" app:sBackgroundDrawableRes="@color/white" app:sDividerLineType="none" app:sLeftTextColor="@color/color_333" app:sLeftTextSize="@dimen/sp_14" app:sLeftTextString="" app:sRightIconHeight="@dimen/dp_15" app:sRightIconRes="@mipmap/arrowdown_gray" app:sRightIconWidth="@dimen/dp_15" app:sRightTextColor="@color/color_666" app:sRightTextString="" app:sUseRipple="false" /> <LinearLayout android:id="@ + id/ll_site_info" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/color_dbdbdb" android:clickable="true" android:focusable="true" android:orientation="vertical" android:visibility="visible"> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/dp_30" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_15" android:text="@string/site_code" android:textSize="@dimen/sp_14" /> <TextView android:id="@ + id/site_code" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_10" android:layout_marginEnd="@dimen/dp_15" android:layout_weight="1" android:gravity="center_vertical" android:minHeight="@dimen/dp_30" android:paddingStart="@dimen/dp_5" android:textColor="@color/attendance_blue" android:textSize="@dimen/sp_14" tools:ignore="Autofill,LabelFor,RtlSymmetry" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/dp_30" android:gravity="center_vertical" android:orientation="horizontal"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_15" android:text="@string/city" android:textSize="@dimen/sp_14" /> <TextView android:id="@ + id/site_city" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/dp_10" android:layout_weight="1" android:gravity="center_vertical" android:minHeight="@dimen/dp_30" android:paddingStart="@dimen/dp_5" android:textColor="@color/attendance_blue" android:textSize="@dimen/sp_14" tools:ignore="Autofill,LabelFor,RtlSymmetry" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/dp_30" android:gravity="center_vertical" android:orientation="horizontal"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_15" android:text="@string/duty_man" android:textSize="@dimen/sp_14" /> <TextView android:id="@ + id/tv_site_duty_man" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/dp_10" android:layout_weight="1" android:gravity="center_vertical" android:minHeight="@dimen/dp_30" android:paddingStart="@dimen/dp_5" android:textColor="@color/attendance_blue" android:textSize="@dimen/sp_14" tools:ignore="Autofill,LabelFor,RtlSymmetry" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/dp_30" android:gravity="center_vertical" android:orientation="horizontal"> <LinearLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_15" android:text="@string/contract" android:textSize="@dimen/sp_14" /> <TextView android:id="@ + id/tv_contract" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginEnd="@dimen/dp_15" android:layout_weight="2" android:gravity="center_vertical" android:minHeight="@dimen/dp_30" android:paddingStart="@dimen/dp_5" android:textColor="@color/attendance_blue" android:textSize="@dimen/sp_14" tools:ignore="Autofill,LabelFor,RtlSymmetry" /> </LinearLayout> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="@dimen/dp_30" android:gravity="center_vertical" android:orientation="horizontal" tools:ignore="UseCompoundDrawables"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_15" android:text="@string/site_type" android:textSize="@dimen/sp_14" /> <TextView android:id="@ + id/tv_site_type" android:layout_width="match_parent" android:layout_height="@dimen/dp_30" android:layout_marginEnd="@dimen/dp_15" android:gravity="center_vertical" android:minHeight="@dimen/dp_30" android:paddingStart="@dimen/dp_5" android:textColor="@color/attendance_blue" tools:ignore="RtlSymmetry" /> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:layout_marginStart="@dimen/dp_15" android:layout_marginEnd="@dimen/dp_15" android:background="@color/color_999" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/dp_5" android:layout_marginBottom="@dimen/dp_10" android:orientation="horizontal"> <com.allen.library.SuperButton android:id="@ + id/sb_special_check" android:layout_width="0dp" android:layout_height="@dimen/dp_35" android:layout_marginStart="@dimen/dp_15" android:layout_marginEnd="@dimen/dp_15" android:layout_weight="1" android:gravity="center" android:text="Special inspection" android:textColor="@color/white" android:visibility="gone" app:sCornersRadius="@dimen/dp_2" app:sSelectorNormalColor="@color/blue" app:sUseSelector="true" tools:ignore="RtlSymmetry" /> <com.allen.library.SuperButton android:id="@ + id/sb_fly_check" android:layout_width="0dp" android:layout_height="@dimen/dp_35" android:layout_marginStart="@dimen/dp_15" android:layout_weight="1" android:gravity="center" android:text="Start checking" android:textColor="@color/blue" app:sCornersRadius="@dimen/dp_2" app:sSelectorNormalColor="@color/transparent" app:sUseSelector="true" tools:ignore="RtlSymmetry" /> <View android:layout_width="@dimen/dp_1" android:layout_height="@dimen/dp_20" android:layout_gravity="center_vertical" android:background="@color/color_999" /> <com.allen.library.SuperButton android:id="@ + id/sb_site_document" android:layout_width="0dp" android:layout_height="@dimen/dp_35" android:layout_weight="1" android:gravity="center" android:text="@string/site_document" android:textColor="@color/blue" app:sCornersRadius="@dimen/dp_2" app:sSelectorNormalColor="@color/transparent" app:sUseSelector="true" tools:ignore="RtlSymmetry" /> <View android:layout_width="@dimen/dp_1" android:layout_height="@dimen/dp_20" android:layout_gravity="center_vertical" android:background="@color/color_999" /> <com.allen.library.SuperButton android:id="@ + id/sb_navi" android:layout_width="0dp" android:layout_height="@dimen/dp_35" android:layout_marginEnd="@dimen/dp_15" android:layout_weight="1" android:gravity="center" android:text="@string/navigate" android:textColor="@color/blue" app:sCornersRadius="@dimen/dp_2" app:sSelectorNormalColor="@color/transparent" app:sUseSelector="true" tools:ignore="RtlSymmetry" /> </LinearLayout> </LinearLayout> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="@color/color_F6F7FB" /> </LinearLayout> <TextView android:id="@ + id/tv_delete" android:layout_width="@dimen/dp_60" android:layout_height="@dimen/dp_40" android:gravity="center" android:text="Delete" android:textColor="@color/red" android:textSize="@dimen/sp_16" /> </com.dtrt.preventpro_irontower.view.weiget.swipe.EasySwipeMenuLayout> </layout>
Activity used
holder.getView<TextView>(R.id.tv_delete).setOnClickListener {<!-- --> NiceDialog.init().setLayoutId(R.layout.dialog_tips) .setConvertListener(object : ViewConvertListener() {<!-- --> override fun convertView(holder: ViewHolder, dialog: BaseNiceDialog) {<!-- --> (holder.getView<View>(R.id.title) as TextView).text = "Are you sure you want to delete this site?" holder.setOnClickListener(R.id.confirm) {<!-- --> if ("YJCH" == item. checkStatus) {<!-- --> showToast("The checked site cannot be deleted") } else {<!-- --> halfYearCheckVM.deleteSite(item.contextId) } dialog. dismiss() } holder.setOnClickListener(R.id.cancel) {<!-- --> dialog. dismiss() } } }).setOutCancel(false).setMargin(30).show(supportFragmentManager) val easySwipeMenuLayout = holder.getView<EasySwipeMenuLayout>(R.id.swipeItem) easySwipeMenuLayout. resetStatus() } holder.getView<SuperTextView>(R.id.stv_name).setOnClickListener {<!-- --> item.isOpen = !item.open notifyDataSetChanged() }