RecyclerView란?
RecyclerView는 안드로이드에서 리스트 형태의 뷰를 보여주기 위한 위젯입니다.
ListView와 비슷하지만 좀 더 유연하고 성능이 우수합니다.
RecyclerView는 ViewHolder 패턴, ItemAnimator, ItemDecorator 등의 기능을 제공합니다.
RecyclerView 구현하기
RecyclerView를 사용하기 위해서는 다음과 같은 단계를 거쳐야 합니다.
1. RecyclerView 라이브러리 추가
build.gradle 파일에 다음 코드를 추가해주세요.
implementation 'androidx.recyclerview:recyclerview:1.2.1'
2. RecyclerView 레이아웃 추가
RecyclerView를 사용할 레이아웃 파일에 RecyclerView를 추가해주세요.
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3. RecyclerView Adapter 구현하기
RecyclerView Adapter를 구현하기 위해서는 RecyclerView.Adapter 클래스를 상속받아야 합니다. RecyclerView Adapter는 데이터를 관리하고 뷰를 생성하는 역할을 합니다.
class MyAdapter(private val dataSet: List<String>) :
RecyclerView.Adapter<MyAdapter.ViewHolder>() {
// 뷰 홀더 생성
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.item_layout, parent, false)
return ViewHolder(view)
}
// 데이터를 뷰에 바인딩
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.bind(dataSet[position])
}
// 데이터셋의 크기 반환
override fun getItemCount() = dataSet.size
// 뷰 홀더 클래스
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
private val textView: TextView = view.findViewById(R.id.textView)
fun bind(text: String) {
textView.text = text
}
}
}
4. RecyclerView 데이터 설정
RecyclerView에 데이터를 설정하기 위해서는 RecyclerView.Adapter 객체를 생성하고 RecyclerView에 setAdapter() 메소드로 설정해야 합니다.
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
val dataSet = listOf("Item 1", "Item 2", "Item 3")
val adapter = MyAdapter(dataSet)
recyclerView.adapter = adapter
5. 샘플 코드
다음은 RecyclerView로 동적으로 리스트를 만드는 간단한 예제 코드입니다.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
val dataSet = mutableListOf<String>()
val adapter = MyAdapter(dataSet)
recyclerView.adapter = adapter
val addButton = findViewById<Button>(R.id.addButton)
addButton.setOnClickListener {
val newItem = "Item ${dataSet.size + 1}"
dataSet.add(newItem)
adapter.notifyItemInserted(dataSet.size - 1)
}
val removeButton = findViewById<Button>(R.id.removeButton)
removeButton.setOnClickListener {
if (dataSet.isNotEmpty()) {
dataSet.removeAt(dataSet
}
adapter.notifyDataSetChanged()
}
}
}
이 예제에서는 Add 버튼을 누를 때마다 새로운 아이템이 추가되고, Remove 버튼을 누를 때마다 마지막 아이템이 제거됩니다. notifyItemInserted()와 notifyDataSetChanged() 메소드를 사용하여 데이터가 변경될 때마다 RecyclerView에 반영할 수 있습니다.
6. 결론
RecyclerView를 사용하면 동적인 리스트를 쉽게 구현할 수 있습니다. ViewHolder 패턴을 사용하여 성능을 개선하고, ItemAnimator와 ItemDecorator를 사용하여 더욱 다양한 리스트를 만들 수 있습니다. RecyclerView는 안드로이드 앱을 개발할 때 자주 사용되는 위젯이므로, 꼭 숙지해두시길 권장합니다.
'개발 > Android' 카테고리의 다른 글
[Android] SQLite 데이터베이스를 사용하는 이유는? (0) | 2023.02.24 |
---|---|
[Android] Context란? (0) | 2023.02.24 |
[Android] RecyclerView와 ListView의 차이점 (0) | 2023.02.23 |
[Android] Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. 해결 (0) | 2023.02.21 |
[Android] kotlin-android-extensions deprecated (0) | 2023.02.20 |
댓글