본문 바로가기

개발 이야기

RecycerView adapter 간단정리

320x100

네, 확인했습니다! 이전에 제가 보내드린 코드에 RecyclerView의 어댑터를 설정하는 코드가 포함되어 있었지만, 레이아웃 매니저에 대한 정보가 누락되어 있었습니다.

다시 한번, RecyclerView를 초기화하기 위해서는 다음과 같은 코드를 추가해야합니다.

// RecyclerView 객체를 참조합니다.
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)

// 레이아웃 매니저를 생성합니다.
val layoutManager = LinearLayoutManager(this)
recyclerView.layoutManager = layoutManager

여기서, LinearLayoutManager는 RecyclerView의 아이템을 세로로 쌓는 레이아웃 매니저입니다. 만약에, 가로로 아이템을 배치하기 원한다면 아래와 같은 코드로 GridLayoutManager를 사용하여 설정해야합니다.

// RecyclerView 객체를 참조합니다.
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)

// 레이아웃 매니저를 생성합니다.
val layoutManager = GridLayoutManager(this, spanCount)
recyclerView.layoutManager = layoutManager

여기서 spanCount는 아이템을 몇 개씩 보여줄지 결정할 수 있는 값입니다.

어댑터 설정에 대해서는 이전에 제가 보내드린 코드와 동일합니다. 다시 덧붙여 설명드리면, RecyclerViewAdapter 클래스에서 ViewHolder를 상속한 클래스를 만들고, onCreateViewHolder()와 onBindViewHolder() 함수를 구현하면 됩니다.

class RecyclerViewAdapter : RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>() {

    private val itemList = mutableListOf<String>()

    inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        private val textView: TextView = itemView.findViewById(R.id.textView)

        fun bind(item: String) {
            textView.text = item
        }
    }

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

    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        val item = itemList[position]
        holder.bind(item)
    }

    override fun getItemCount(): Int {
        return itemList.size
    }
}

위의 코드에서, onCreateViewHolder() 함수는 RecyclerView의 각각의 아이템 뷰를 위해 ViewHolder 객체를 생성합니다. 또한, onBindViewHolder() 함수는 ViewHolder와 데이터를 연결합니다. 마지막으로, getItemCount() 함수에서는 RecyclerView에 표시 할 아이템 수를 반환합니다.

이제 RecyclerView 설정에 대한 모든 정보를 확인하셨으니 참고하시기 바랍니다!

반응형