1+ package com.yhw.taglayout.sample
2+
3+ import android.os.Bundle
4+ import android.view.LayoutInflater
5+ import android.view.View
6+ import android.view.ViewGroup
7+ import android.widget.TextView
8+ import androidx.appcompat.app.AppCompatActivity
9+ import androidx.recyclerview.widget.RecyclerView
10+ import androidx.recyclerview.widget.RecyclerView.Adapter
11+ import androidx.recyclerview.widget.RecyclerView.ViewHolder
12+ import androidx.swiperefreshlayout.widget.SwipeRefreshLayout
13+ import com.yhw.taglayout.TagAdapter
14+ import com.yhw.taglayout.TagLayout
15+
16+ /* *
17+ * 列表
18+ */
19+ class ListActivity : AppCompatActivity () {
20+ private lateinit var mRecyclerView: RecyclerView
21+ private lateinit var mRefreshLayout: SwipeRefreshLayout
22+ private var mAdapter: ListAdapter ? = null
23+ private val list1 =
24+ mutableListOf (" 陕西西安" , " 新疆乌鲁木齐" , " 北京天安门" , " 西安大雁塔" , " 秦始皇兵马俑" , " 内蒙古呼伦贝尔大草原" , " 山西大同" )
25+ private val list2 = mutableListOf (" 红色" , " 黄色" , " 绿色" , " 紫色" , " 蓝色" )
26+
27+ override fun onCreate (savedInstanceState : Bundle ? ) {
28+ super .onCreate(savedInstanceState)
29+ setContentView(R .layout.activity_list)
30+ mRecyclerView = findViewById(R .id.recycler_view)
31+ mRefreshLayout = findViewById(R .id.refresh_layout)
32+
33+ mRefreshLayout.setOnRefreshListener {
34+ mRefreshLayout.isRefreshing = true
35+ getData()
36+ }
37+ getData()
38+ }
39+
40+ private fun getData () {
41+ val list = mutableListOf<Bean >()
42+ for (i in 0 .. 100 ) {
43+ val tagList = mutableListOf<String >()
44+ if (i % 2 == 0 ) {
45+ for (s in list1) {
46+ tagList.add(s)
47+ }
48+ } else {
49+ for (s in list2) {
50+ tagList.add(s)
51+ }
52+ }
53+ val bean = Bean (" " , tagList)
54+ bean.name = " $i ."
55+ bean.tagList = tagList
56+ list.add(bean)
57+ }
58+ if (mAdapter == null ) {
59+ mAdapter = ListAdapter (list)
60+ mRecyclerView.adapter = mAdapter
61+ } else {
62+ mAdapter?.notifyDataSetChanged()
63+ }
64+ mRefreshLayout.isRefreshing = false
65+ }
66+
67+ class ListAdapter (private val list : List <Bean >) : Adapter<MyViewHolder>() {
68+
69+ override fun onCreateViewHolder (parent : ViewGroup , viewType : Int ): MyViewHolder {
70+ val itemView = LayoutInflater .from(parent.context)
71+ .inflate(R .layout.list_item_layout, parent, false )
72+ return MyViewHolder (itemView)
73+ }
74+
75+ override fun getItemCount (): Int = list.size
76+
77+ override fun onBindViewHolder (holder : MyViewHolder , position : Int ) {
78+ holder.textView.text = list[position].name
79+ holder.tagLayout.setAdapter(MyTagAdapter (list[position].tagList))
80+ }
81+
82+ }
83+
84+ class MyViewHolder (itemView : View ) : ViewHolder(itemView) {
85+ val tagLayout: TagLayout = itemView.findViewById(R .id.tag_layout)
86+ val textView: TextView = itemView.findViewById(R .id.tv_text)
87+ }
88+
89+ class MyTagAdapter (private val dataList : List <String >) : TagAdapter() {
90+ override fun onCreateView (parent : ViewGroup ): View {
91+ return LayoutInflater .from(parent.context)
92+ .inflate(R .layout.tag_item_layout, parent, false )
93+ }
94+
95+ override fun onBindView (itemView : View , position : Int ) {
96+ val textView: TextView = itemView.findViewById(R .id.tv_title)
97+ textView.text = dataList[position]
98+ }
99+
100+ override fun getItemCount (): Int {
101+ return dataList.size
102+ }
103+ }
104+
105+ data class Bean (var name : String , var tagList : List <String >)
106+ }
0 commit comments