Android Kotlin Recyclerview - 리스트 항목 클릭 시 스타일 변경
Notepad96
·2022. 1. 13. 09:49
300x250
1. 결 과
# 이 글은 리스트(리사이클러뷰)의 항목을 클릭 및 선택 했을 시 스타일을 변경하는 방법을 기술한다.
# 항목을 선택하면 배경색을 변경하며 다른 항목을 클릭하면 기존 항목의 배경색은 원래대로 돌아오며 새로운 항목의 배경색을 변경한다.
2. ListAdapter.kt (RecyclerView Adapter)
package com.example.recyclerviewitemselect
import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.list_item.view.*
class ListAdapter: RecyclerView.Adapter<ListAdapter.ListView>() {
var selectPos = -1
inner class ListView(val layout: View): RecyclerView.ViewHolder(layout)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ListView {
return ListView(LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false))
}
override fun onBindViewHolder(holder: ListView, position: Int) {
if(selectPos == position) {
holder.layout.list_item_layout.setBackgroundColor(Color.parseColor("#aaaaaa"))
} else {
holder.layout.list_item_layout.setBackgroundColor(Color.WHITE)
}
holder.layout.list_item_layout.setOnClickListener {
var beforePos = selectPos
selectPos = position
notifyItemChanged(beforePos)
notifyItemChanged(selectPos)
}
}
override fun getItemCount(): Int {
return 20
}
}
# 현재 선택된 pos를 저장할 selectPos 선언하여 현재 position과 일치할 경우 배경을 바꾸고 그 외의는 기본값을 갖도록 만든다.
# 리스트의 항목을 클릭하였을 시 selectPos를 beforePos의 저장한 후 현재 position으로 바꾸어준다.
이후 notifyItemChanged의 이전 pos와 현재 pos를 줌으로써 해당 항목들의 레이아웃을 다시 생성하게됨으로서 스타일이 업데이트 된다.
3. 전체 코드
300x250
'Android' 카테고리의 다른 글
Android Kotlin RecyclerView Parent View Style - 부모 뷰 오브젝트 스타일 변경 (0) | 2022.01.17 |
---|---|
Android Kotlin SnapHelper - 항목 단위로 스크롤 (0) | 2022.01.16 |
Android Kotlin Bottom Navigation - 하단 네비게이션 (0) | 2022.01.12 |
Android Kotlin Pop Menu - 메뉴 생성 (0) | 2021.12.26 |
Android Kotlin Context Menu - 컨텍스트 메뉴 (0) | 2021.12.22 |