[Kotlin] RecyclerView Extension Function

2021. 1. 14. 04:24γ†πŸ“±Android/πŸ“ Android Study

λ°˜μ‘ν˜•

Kotlinμ—λŠ” μ •μ˜λ˜μ–΄ μžˆλŠ” ν΄λž˜μŠ€μ— μƒˆλ‘œμš΄ ν•¨μˆ˜λ₯Ό μΆ”κ°€ν•  수 μžˆλŠ” κΈ°λŠ₯인 'Extension Function(ν™•μž₯ ν•¨μˆ˜)' κΈ°λŠ₯이 μ‘΄μž¬ν•©λ‹ˆλ‹€.

Kotlin의 ν™•μž₯ ν•¨μˆ˜ μ‚¬μš©λ²•μ— λŒ€ν•΄ κΆκΈˆν•˜μ‹œλ‹€λ©΄..?!

 

[Kotlin] ν™•μž₯ν•¨μˆ˜(Extension Function)

Kotlinμ—λŠ” ν™•μž₯ ν•¨μˆ˜(Extension Function)μ΄λΌλŠ” κ°œλ…μ΄ μ‘΄μž¬ν•©λ‹ˆλ‹€. Andorid κ°œλ°œμ—λ„ μœ μš©ν•˜κ²Œ μ‚¬μš©λ˜λŠ” ν™•μž₯ν•¨μˆ˜(Extension Function)에 λŒ€ν•΄ κ³΅λΆ€ν•΄λ³Όκ²Œμš” : ) Extension Function μ΄λž€?! ν΄λž˜μŠ€μ—λŠ” λ‹€μ–‘ν•œ..

yunaaaas.tistory.com

 

μ˜€λŠ˜μ€ RecycelerView 에 μœ μš©ν•˜κ²Œ μ‚¬μš©λ  λ§Œν•œ ν™•μž₯ν•¨μˆ˜ ν•˜λ‚˜λ₯Ό μ†Œκ°œ ν•΄ λ“œλ¦¬κ³ μž ν•©λ‹ˆλ‹€!

ViewHolder 객체λ₯Ό inflate ν•  λ•Œ μœ μš©ν•˜κ²Œ μ‚¬μš©λ  λ§Œν•œ ν™•μž₯ν•¨μˆ˜μž…λ‹ˆλ‹€.

 

πŸ“Œ RecyclerViewExt.kt

μ•„λž˜μ™€ 같이 ViewGroup의 inflate ν•¨μˆ˜λ₯Ό ν™•μž₯ ν•¨μˆ˜λ‘œ λ§Œλ“€μ–΄ λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup

fun ViewGroup.inflate(layoutRes: Int): View
        = LayoutInflater.from(context).inflate(layoutRes, this, false)

 

πŸ“Œ RecyclerView Extension Function μ‚¬μš©λ²•

μœ„μ˜ ν™•μž₯ν•¨μˆ˜κ°€ μ–΄λ–»κ²Œ μ‚¬μš©λ˜λŠ” 지 λ³΄μ—¬λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€!

κΈ°μ‘΄ μ½”λ“œλŠ” μ•„λž˜μ™€ 같이 μž‘μ„±ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        val view = LayoutInflater.from(context).inflate(R.layout.item_recycler_ex,parent,false)
        return ViewHolder(view)
    }

 

ν•˜μ§€λ§Œ ν™•μž₯ν•¨μˆ˜λ₯Ό μ΄μš©ν•œλ‹€λ©΄ !? 

훨씬 더 κΉ”λ”ν•œ μ½”λ“œλ₯Ό λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€ : ) λ¦¬μ‚¬μ΄ν΄λŸ¬λ·° AdpaterλŠ” μ•ˆλ“œλ‘œμ΄λ“œ κ°œλ°œμ„ ν•˜μ‹€λ•Œ 많이 μ‚¬μš©λ˜κ³ , κ΅¬ν˜„ν•΄μ•Ό ν•˜λŠ” λΆ€λΆ„μ΄λ―€λ‘œ ν™•μž₯ ν•¨μˆ˜λ₯Ό λ”°λ‘œ λ§Œλ“€μ–΄ μ‚¬μš©ν•˜λ©΄ μ’€ 더 κ°„νŽΈν•˜κ²Œ Adpaterλ₯Ό λ§Œλ“œμ‹€ 수 μžˆμŠ΅λ‹ˆλ‹€!

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder  
	= ViewHolder(parent.inflate(R.layout.item_recycler_ex))

 

λ°˜μ‘ν˜•