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
)
}
// 添加点击事件(也可以放在 Activity 中处理)
helper.convertView.setOnClickListener {
setDefSelect(helper.adapterPosition)
}
}
}
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);
}

本文介绍了一个用于展示巡检任务列表的自定义Adapter实现,包括Bean类定义、RecyclerView Adapter编写及其在Activity中的使用方法。
1058

被折叠的 条评论
为什么被折叠?



