记录一次BaseQuickAdapter实现切换效果(单选)

1、Bean类

data class CheckPoint(
    var address: String,
    var checked: Boolean,
    var deviceCode: String,
    var deviceType: Int,
    var lat: Double,
    var lpTaskCheckpId: Int,
    var lon: Double,
    var photoImgIds: String,
    var photoPoint: Boolean,
    var photoed: Boolean
) : Serializable
2、Adapter
class SelectTaskListAdapter(
    mDatas: MutableList<CheckPoint>
) :
    BaseQuickAdapter<CheckPoint, BaseViewHolder>(
        R.layout.recycler_select_task_list,
        mDatas
    ) {

    private var checkedPosition: Int = -1
    fun setDefSelect(position: Int) {
        this.checkedPosition = position
        notifyDataSetChanged()
    }


    override fun convert(
        helper: BaseViewHolder,
        item: CheckPoint
    ) {

        helper.setText(R.id.tv_map_name, item.address)
        helper.setText(R.id.tv_name, item.deviceCode)
        val ll_item_message = helper.getView<ConstraintLayout>(R.id.ll_all)
        var position = helper.adapterPosition
        if (checkedPosition != -1) {
            if (checkedPosition == position) {
                ll_item_message.setBackgroundResource(R.drawable.shape_blue_bg)
            } else {
                ll_item_message.setBackgroundResource(R.drawable.shape_bg)
            }
        }
        when (item.photoed) {
            true -> helper.setImageResource(
                R.id.v_task_type,
                R.drawable.public_patrol_map_photo
            )
            false -> helper.setImageResource(
                R.id.v_task_type,
                R.drawable.public_patrol_map_location
            )
        }
    }
}
3、布局文件recycler_select_task_list_item

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginStart="@dimen/public_dp_15"
    android:layout_marginEnd="@dimen/public_dp_15"
    android:id="@+id/ll_all"
    android:layout_marginBottom="@dimen/public_dp_2"
    android:background="@drawable/routing_inspection_shape_tem_bg"
    android:elevation="@dimen/public_dp_5">



    <ImageView

        android:padding="@dimen/public_dp_10"
        android:id="@+id/v_task_type"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/public_dp_10"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/tv_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="@dimen/public_dp_6"
        android:layout_marginEnd="@dimen/public_dp_15"
        android:text="显示完为止"
        android:textColor="@color/public_color_222222"
        android:textSize="@dimen/public_dp_14"
        android:textStyle="bold"
        app:layout_constrainedWidth="true"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toEndOf="@id/v_task_type"
        app:layout_constraintTop_toTopOf="@id/v_task_type" />


    <TextView
        android:id="@+id/tv_map_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="@dimen/public_dp_8"
        android:layout_marginEnd="@dimen/public_dp_15"
        android:paddingBottom="@dimen/public_dp_10"
        android:text="城东片区"
        android:textColor="@color/public_color_222222"
        android:textSize="@dimen/public_dp_12"
        app:layout_constrainedWidth="true"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="@id/tv_name"
        app:layout_constraintTop_toBottomOf="@id/tv_name" />


    <View
        android:id="@+id/routing_inspection_v_line"
        android:layout_width="@dimen/public_dp_0"
        android:layout_height="@dimen/public_dp_1"
        android:layout_marginTop="@dimen/public_dp_10"
        android:background="@color/public_color_f2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@id/tv_map_name" />

</androidx.constraintlayout.widget.ConstraintLayout>

shape_tem_bg、shape_bg为背景色,请自行定义更改

public_dp_相关数据自行定义的dp数据

关键代码

fun setDefSelect(position: Int) { this.checkedPosition = position notifyDataSetChanged() }

4、activity中使用

mSelectTaskListAdapter.onItemClickListener =
    BaseQuickAdapter.OnItemClickListener { _, _, position ->
        mItem = mSelectTaskListAdapter.data[position]
        mSelectTaskListAdapter.setDefSelect(position);

    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值