Skip to content

Commit 3a2a598

Browse files
feat(*): 添加RecyclerView单选通用适配器
1 parent 9db93e2 commit 3a2a598

File tree

12 files changed

+822
-3
lines changed

12 files changed

+822
-3
lines changed

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ dependencies {
3232
implementation 'androidx.core:core-ktx:1.9.0'
3333
implementation 'androidx.appcompat:appcompat:1.5.1'
3434
implementation 'androidx.recyclerview:recyclerview:1.2.1'
35+
implementation 'com.google.code.gson:gson:2.9.0'
3536
}

app/src/main/assets/TestData.json

Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
{
2+
"code": 200,
3+
"data": {
4+
"rows": [
5+
{
6+
"certificationStatus": "",
7+
"customerName": "",
8+
"customerNo": "",
9+
"id": "12",
10+
"manufacturingNo": "0",
11+
"measureLastTime": "",
12+
"measurePeriod": "",
13+
"orderId": "",
14+
"remark": "8",
15+
"sampleModel": "0",
16+
"sampleName": "00",
17+
"sampleNo": "khyp202302160004",
18+
"sampleSatus": "",
19+
"sampleSatusName": "",
20+
"validDeadline": ""
21+
},
22+
{
23+
"certificationStatus": "1",
24+
"customerName": "",
25+
"customerNo": "",
26+
"id": "1",
27+
"manufacturingNo": "123456",
28+
"measureLastTime": "",
29+
"measurePeriod": "36",
30+
"orderId": "1630895827139780610",
31+
"remark": "NO",
32+
"sampleModel": "X-M01",
33+
"sampleName": "电压表",
34+
"sampleNo": "khyp202303010009",
35+
"sampleSatus": "",
36+
"sampleSatusName": "",
37+
"validDeadline": "2023-02-15 16:05:50"
38+
},
39+
{
40+
"certificationStatus": "0",
41+
"customerName": "",
42+
"customerNo": "",
43+
"id": "1626023210582876161",
44+
"manufacturingNo": "7",
45+
"measureLastTime": "",
46+
"measurePeriod": "7",
47+
"orderId": "1626491083029766145",
48+
"remark": "7",
49+
"sampleModel": "7",
50+
"sampleName": "7",
51+
"sampleNo": "khyp202302170009",
52+
"sampleSatus": "",
53+
"sampleSatusName": "",
54+
"validDeadline": ""
55+
},
56+
{
57+
"certificationStatus": "0",
58+
"customerName": "",
59+
"customerNo": "",
60+
"id": "1626022937365913602",
61+
"manufacturingNo": "9",
62+
"measureLastTime": "",
63+
"measurePeriod": "9",
64+
"orderId": "1630869938414903297",
65+
"remark": "9",
66+
"sampleModel": "9",
67+
"sampleName": "9",
68+
"sampleNo": "khyp202303010005",
69+
"sampleSatus": "",
70+
"sampleSatusName": "",
71+
"validDeadline": ""
72+
},
73+
{
74+
"certificationStatus": "1",
75+
"customerName": "",
76+
"customerNo": "",
77+
"id": "1625742343335677953",
78+
"manufacturingNo": "44",
79+
"measureLastTime": "2023-02-03 06:18:08",
80+
"measurePeriod": "1",
81+
"orderId": "1630895827139780610",
82+
"remark": "备注4",
83+
"sampleModel": "4444",
84+
"sampleName": "测试4",
85+
"sampleNo": "khyp202303010010",
86+
"sampleSatus": "",
87+
"sampleSatusName": "",
88+
"validDeadline": "2023-02-03 06:18:08"
89+
},
90+
{
91+
"certificationStatus": "0",
92+
"customerName": "",
93+
"customerNo": "",
94+
"id": "1625401544907988994",
95+
"manufacturingNo": "11111",
96+
"measureLastTime": "",
97+
"measurePeriod": "",
98+
"orderId": "1630869938414903297",
99+
"remark": "无备注",
100+
"sampleModel": "型号1",
101+
"sampleName": "测试1",
102+
"sampleNo": "khyp202303010007",
103+
"sampleSatus": "",
104+
"sampleSatusName": "",
105+
"validDeadline": ""
106+
},
107+
{
108+
"certificationStatus": "0",
109+
"customerName": "",
110+
"customerNo": "",
111+
"id": "1623237101562425346",
112+
"manufacturingNo": "",
113+
"measureLastTime": "",
114+
"measurePeriod": "",
115+
"orderId": "1623237100174110722",
116+
"remark": "无备注",
117+
"sampleModel": "型号1",
118+
"sampleName": "样品1",
119+
"sampleNo": "khyp202302080002",
120+
"sampleSatus": "1",
121+
"sampleSatusName": "待收入",
122+
"validDeadline": ""
123+
},
124+
{
125+
"certificationStatus": "0",
126+
"customerName": "",
127+
"customerNo": "",
128+
"id": "1623234967819284481",
129+
"manufacturingNo": "",
130+
"measureLastTime": "",
131+
"measurePeriod": "",
132+
"orderId": "1623234926190817282",
133+
"remark": "无备注",
134+
"sampleModel": "型号1",
135+
"sampleName": "样品1",
136+
"sampleNo": "khyp202302080001",
137+
"sampleSatus": "1",
138+
"sampleSatusName": "待收入",
139+
"validDeadline": ""
140+
},
141+
{
142+
"certificationStatus": "",
143+
"customerName": "",
144+
"customerNo": "",
145+
"id": "1622474928405950466",
146+
"manufacturingNo": "123121",
147+
"measureLastTime": "",
148+
"measurePeriod": "1",
149+
"orderId": "",
150+
"remark": "无备注",
151+
"sampleModel": "型号1",
152+
"sampleName": "样品1",
153+
"sampleNo": "khyp202302060002",
154+
"sampleSatus": "",
155+
"sampleSatusName": "",
156+
"validDeadline": "2023-02-03 06:18:08"
157+
},
158+
{
159+
"certificationStatus": "",
160+
"customerName": "",
161+
"customerNo": "",
162+
"id": "1621393609206857729",
163+
"manufacturingNo": "123121",
164+
"measureLastTime": "",
165+
"measurePeriod": "1",
166+
"orderId": "",
167+
"remark": "无备注",
168+
"sampleModel": "型号1",
169+
"sampleName": "样品1",
170+
"sampleNo": "khyp202302030005",
171+
"sampleSatus": "",
172+
"sampleSatusName": "",
173+
"validDeadline": "2023-02-03 06:18:08"
174+
},
175+
{
176+
"certificationStatus": "1",
177+
"customerName": "",
178+
"customerNo": "",
179+
"id": "1621393067894177794",
180+
"manufacturingNo": "123121",
181+
"measureLastTime": "",
182+
"measurePeriod": "1",
183+
"orderId": "1630895827139780610",
184+
"remark": "无备注",
185+
"sampleModel": "无模型",
186+
"sampleName": "张三1",
187+
"sampleNo": "khyp202303010011",
188+
"sampleSatus": "",
189+
"sampleSatusName": "",
190+
"validDeadline": "2023-02-03 06:18:08"
191+
},
192+
{
193+
"certificationStatus": "",
194+
"customerName": "",
195+
"customerNo": "",
196+
"id": "1621392987623587842",
197+
"manufacturingNo": "123121",
198+
"measureLastTime": "",
199+
"measurePeriod": "1",
200+
"orderId": "",
201+
"remark": "无备注",
202+
"sampleModel": "型号1",
203+
"sampleName": "样品1",
204+
"sampleNo": "khyp202302030003",
205+
"sampleSatus": "",
206+
"sampleSatusName": "",
207+
"validDeadline": "2023-02-03 06:18:08"
208+
},
209+
{
210+
"certificationStatus": "",
211+
"customerName": "",
212+
"customerNo": "",
213+
"id": "1621392920011407361",
214+
"manufacturingNo": "123121",
215+
"measureLastTime": "",
216+
"measurePeriod": "1",
217+
"orderId": "",
218+
"remark": "无备注",
219+
"sampleModel": "型号1",
220+
"sampleName": "样品1",
221+
"sampleNo": "khyp202302030002",
222+
"sampleSatus": "",
223+
"sampleSatusName": "",
224+
"validDeadline": "2023-02-03 06:18:08"
225+
},
226+
{
227+
"certificationStatus": "",
228+
"customerName": "",
229+
"customerNo": "",
230+
"id": "1621392576653099010",
231+
"manufacturingNo": "123121",
232+
"measureLastTime": "",
233+
"measurePeriod": "1",
234+
"orderId": "",
235+
"remark": "无备注",
236+
"sampleModel": "型号1",
237+
"sampleName": "样品1",
238+
"sampleNo": "khyp202302030001",
239+
"sampleSatus": "",
240+
"sampleSatusName": "",
241+
"validDeadline": "2023-02-03 06:18:08"
242+
}
243+
],
244+
"total": 14
245+
},
246+
"message": "请求成功"
247+
}

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

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,22 @@
11
package com.pengxh.kt.lib
22

3+
import android.util.Log
4+
import androidx.recyclerview.widget.DefaultItemAnimator
5+
import androidx.recyclerview.widget.DividerItemDecoration
6+
import com.google.gson.Gson
7+
import com.google.gson.reflect.TypeToken
8+
import com.pengxh.kt.lite.adapter.SingleChoiceAdapter
9+
import com.pengxh.kt.lite.adapter.ViewHolder
310
import com.pengxh.kt.lite.base.KotlinBaseActivity
11+
import com.pengxh.kt.lite.extensions.readAssetsFile
12+
import kotlinx.android.synthetic.main.activity_main.*
413

514

615
class MainActivity : KotlinBaseActivity() {
716

817
private val kTag = "MainActivity"
18+
private val gson by lazy { Gson() }
19+
private var models: List<SampleListModel.DataModel.RowsModel> = ArrayList()
920

1021
override fun initLayoutView(): Int = R.layout.activity_main
1122

@@ -18,10 +29,35 @@ class MainActivity : KotlinBaseActivity() {
1829
}
1930

2031
override fun initData() {
21-
32+
val data = readAssetsFile("TestData.json")
33+
models = gson.fromJson<SampleListModel>(
34+
data, object : TypeToken<SampleListModel>() {}.type
35+
).data.rows
2236
}
2337

2438
override fun initEvent() {
25-
39+
val singleChoiceAdapter = object : SingleChoiceAdapter<SampleListModel.DataModel.RowsModel>(
40+
R.layout.item_select_sample_lv, models
41+
) {
42+
override fun convertView(
43+
viewHolder: ViewHolder, position: Int, item: SampleListModel.DataModel.RowsModel
44+
) {
45+
viewHolder.setText(R.id.sampleNameView, "${item.sampleName}${item.sampleModel}")
46+
.setText(R.id.manufacturingCodeView, "出厂编号:${item.manufacturingNo}")
47+
.setText(R.id.sampleCodeView, "样品编号:${item.sampleNo}")
48+
.setText(R.id.validDateView, "有效期至:${item.validDeadline}")
49+
}
50+
}
51+
recyclerView.addItemDecoration(
52+
DividerItemDecoration(this, DividerItemDecoration.VERTICAL)
53+
)
54+
(recyclerView.itemAnimator as DefaultItemAnimator).supportsChangeAnimations = false
55+
recyclerView.adapter = singleChoiceAdapter
56+
singleChoiceAdapter.setOnCheckedListener(object :
57+
SingleChoiceAdapter.OnItemCheckedListener<SampleListModel.DataModel.RowsModel> {
58+
override fun onItemChecked(position: Int, t: SampleListModel.DataModel.RowsModel) {
59+
Log.d(kTag, t.id)
60+
}
61+
})
2662
}
2763
}

0 commit comments

Comments
 (0)