์๋ ๊ฐ์ ์ดํ๋ก ์๋๋ก์ด๋๋ฅผ ๋ง์ง ์ ์ด ์๋๋ฐ, ์์ฆ ๋ค์ ๋ถ์ก๊ณ ์๋ค.
์ค๋๋ง์ (๋ฐ๋ ์ ์ด์ง๋ง ๋์๊ฒ ํฐ ์๊ฐ) ๋ง์ง๋ ๋ ์๊ฐ ๊ธฐ์ต๋ค์ด ์์ด ๋ณต์ตํ๋ค๋ ๋๋์ผ๋ก ์๋ฃ๋ฅผ ์ฐพ์๊ฐ๋ฉฐ ์งํ์ค์ด๋ค. Recycler view๋ ์ฌ์ฉ๋ฐฉ๋ฒ์ด ๋ฌด์กฐ๊ฑด ์ต์ํด์ผํ๋ค๊ณ ๋๊ปด์ ์ด๋ฒ์ ์ ๋๋ก ๋ฝ๊ฐฐ๋ค.
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/030.gif)
์ฐ์ ์ด๋ชจํฐ์ฝ ์๊ฒผ๋ค. ์ ๋ฐ์ดํธ๋๋ฏ !
1. RecyclerView ๊ด๋ จ XML element ์์ฑ
๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐandroidx.recyclerview.widget.RecyclerView ์ ๊ทธ ์์ดํ ๋ทฐ ์์ฑ
์์ดํ ๋ทฐ Root layout ํฌ๊ธฐ ์์ฑ์ ์๋์ ๊ฐ์ด ๊ถ์ฅํ๋ค.
- item_room.xml
android:layout_width="wrap_content"
android:layout_height="wrap_content"
๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ ์์ฑ์ ์๋ ์์ฑ์ ๋ฐ๋์ ์ ๋ ฅํด์ผํ๋ค.
- HomeActivity.kt ์ <androidx.recyclerview.widget.RecyclerView>
android:orientation="horizontal" //์์ดํ
์ํ ๋ฐฐ์น (๊ฐ๋ก flow)
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
2. VO class ์์ฑ
Recycler View์ ํ์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด ์ ์. ๋๋ Room์ด๋ ๊ฐ์ฒด๋ฅผ ์ ์ํ๊ณ ์ ํ๋ค.
- RoomVo.kt
class RoomVo(var title: String, var desc: String, var day: String)
3. Adapter class ์์ฑ
ViewHolder ๋ด๋ถ ํด๋์ค, ์ค๋ฒ๋ผ์ด๋ ํ์ ๋ฉ์๋(onCreateViewHolder, onBindViewHolder, getItemCount) ์ ์
- RoomViewAdapter.kt
class RoomViewAdapter(val context: Context, private val RoomData: ArrayList<RoomVo>): RecyclerView.Adapter<RoomViewAdapter.ViewHolder>(){
//RoomData: ๋ฐ์ธ๋ฉ ๋ ๋ฐ์ดํฐ ๊ฐ์ฒด ๋ฐฐ์ด
inner class ViewHolder(view: View?) : RecyclerView.ViewHolder(view!!){
//๋ฐ์ดํฐ๊ฐ ๋ฐ์ธ๋ฉ ๋นํ Item XML ๋ด๋ถ์ elements๋ค
val title = view?.findViewById<TextView>(R.id.title_meeting_item)
val desc = view?.findViewById<TextView>(R.id.desc_meeting_item)
val day = view?.findViewById<TextView>(R.id.date_meeting_item)
fun bind(room: RoomVo, context: Context){
title?.text = room.title
desc?.text = room.desc
day?.text = room.day
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(context).inflate(R.layout.item_room, parent, false)
//๋ฐ์ธ๋ฉ ๋นํ Item XML ํ์ผ๋ช
์ง์ --R.layout.item_room
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
//๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ๋ฐ์ธ๋ฉ --ํฌ์ง์
(์ธ๋ฑ์ค)๊ฐ์ ํ์ฉ ๊ฐ๋ฅ. ํ์ฌ๋ ๋ชจ๋ ๊ฐ ๋ฐ์ธ๋ฉ
holder.bind(RoomData[position], context)
}
override fun getItemCount() = RoomData.size //์ดํญํฐ๋ก ๋ฐ์ธ๋ฉ๋ ์์ดํ
๊ฐ์ ๋ฐํ
}
4. Adapter ํธ์ถ
- HomeActivity.kt
class HomeActivity : AppCompatActivity() {
lateinit var roomsRecyclerView: RecyclerView
lateinit var roomAdapter: RoomViewAdapter
var roomData = ArrayList<RoomVo>() //๋ฐ์ธ๋ฉ ๋ ๊ฐ์ฒด ๋ฐ์ดํฐ ๋ฆฌ์คํธ
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_home)
roomsRecyclerView = findViewById(R.id.rooms_recycleView_home)
roomAdapter = RoomViewAdapter(this, roomData)
roomsRecyclerView.adapter = roomAdapter //๋ฆฌ์ฌ์ดํด๋ฌ๋ทฐ์ ์ด๋ํฐ ์ง์
}
}