Skip to content

Commit 70103af

Browse files
feat(*): 添加RecyclerView普通列表通用适配器
1 parent 3a2a598 commit 70103af

File tree

3 files changed

+80
-8
lines changed

3 files changed

+80
-8
lines changed

app/src/main/java/com/pengxh/kt/lib/MainActivity.kt

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,36 @@ class MainActivity : KotlinBaseActivity() {
3636
}
3737

3838
override fun initEvent() {
39+
/**
40+
* 普通列表
41+
* */
42+
// val normalRecyclerAdapter = object : NormalRecyclerAdapter<SampleListModel.DataModel.RowsModel>(
43+
// R.layout.item_select_sample_lv, models
44+
// ) {
45+
// override fun convertView(
46+
// viewHolder: ViewHolder, position: Int, item: SampleListModel.DataModel.RowsModel
47+
// ) {
48+
// viewHolder.setText(R.id.sampleNameView, "${item.sampleName}【${item.sampleModel}】")
49+
// .setText(R.id.manufacturingCodeView, "出厂编号:${item.manufacturingNo}")
50+
// .setText(R.id.sampleCodeView, "样品编号:${item.sampleNo}")
51+
// .setText(R.id.validDateView, "有效期至:${item.validDeadline}")
52+
// }
53+
// }
54+
// recyclerView.addItemDecoration(
55+
// DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
56+
// )
57+
// (recyclerView.itemAnimator as DefaultItemAnimator).supportsChangeAnimations = false
58+
// recyclerView.adapter = normalRecyclerAdapter
59+
// normalRecyclerAdapter.setOnCheckedListener(object :
60+
// NormalRecyclerAdapter.OnItemClickedListener<SampleListModel.DataModel.RowsModel> {
61+
// override fun onItemClicked(position: Int, t: SampleListModel.DataModel.RowsModel) {
62+
// Log.d(kTag, t.id)
63+
// }
64+
// })
65+
66+
/**
67+
* 单选
68+
* */
3969
val singleChoiceAdapter = object : SingleChoiceAdapter<SampleListModel.DataModel.RowsModel>(
4070
R.layout.item_select_sample_lv, models
4171
) {

lite/build.gradle

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ apply plugin: 'kotlin-android'
33
apply plugin: 'kotlin-android-extensions'
44

55
android {
6-
compileSdkVersion 31
6+
compileSdkVersion 30
77

88
defaultConfig {
99
minSdkVersion 23
10-
targetSdkVersion 31
10+
targetSdkVersion 30
1111
versionCode 1
1212
versionName "1.0"
1313

@@ -34,8 +34,8 @@ android {
3434
}
3535

3636
dependencies {
37-
implementation 'androidx.core:core-ktx:1.8.0'
38-
implementation 'androidx.appcompat:appcompat:1.4.2'
37+
implementation 'androidx.core:core-ktx:1.9.0'
38+
implementation 'androidx.appcompat:appcompat:1.5.1'
3939
implementation 'androidx.cardview:cardview:1.0.0'
4040
implementation "androidx.recyclerview:recyclerview:1.2.1"
4141
implementation 'io.reactivex:rxjava:1.3.8'
@@ -49,11 +49,11 @@ dependencies {
4949
implementation 'com.jakewharton.retrofit:retrofit2-kotlin-coroutines-adapter:0.9.2'
5050
implementation 'com.github.bumptech.glide:glide:4.9.0'
5151
implementation 'com.google.code.gson:gson:2.9.0'
52-
//高德导航(高德导航和高德地图会重复,不兼容,只能选其一)
53-
implementation 'com.amap.api:navi-3dmap:8.1.0_3dmap8.1.0'
52+
//高德导航、定位、地图三合一
53+
implementation 'com.amap.api:navi-3dmap:latest.integration'
5454
//Kotlin协程
55-
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.0'
55+
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.1'
5656
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.1'
57-
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0"
57+
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"
5858
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
5959
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.pengxh.kt.lite.adapter
2+
3+
import android.view.LayoutInflater
4+
import android.view.ViewGroup
5+
import androidx.annotation.LayoutRes
6+
import androidx.recyclerview.widget.RecyclerView
7+
8+
9+
/**
10+
* RecyclerView普通列表适配器
11+
*/
12+
abstract class NormalRecyclerAdapter<T>(
13+
@LayoutRes private val xmlResource: Int, private val dataRows: List<T>
14+
) : RecyclerView.Adapter<ViewHolder>() {
15+
16+
private val kTag = "NormalRecyclerAdapter"
17+
18+
override fun getItemCount(): Int = dataRows.size
19+
20+
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder = ViewHolder(
21+
LayoutInflater.from(parent.context).inflate(xmlResource, parent, false)
22+
)
23+
24+
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
25+
convertView(holder, position, dataRows[position])
26+
holder.itemView.setOnClickListener {
27+
itemCheckedListener?.onItemClicked(position, dataRows[position])
28+
}
29+
}
30+
31+
abstract fun convertView(viewHolder: ViewHolder, position: Int, item: T)
32+
33+
private var itemCheckedListener: OnItemClickedListener<T>? = null
34+
35+
interface OnItemClickedListener<T> {
36+
fun onItemClicked(position: Int, t: T)
37+
}
38+
39+
fun setOnCheckedListener(listener: OnItemClickedListener<T>?) {
40+
itemCheckedListener = listener
41+
}
42+
}

0 commit comments

Comments
 (0)