RecyclerView
RecyclerView는 대량의 데이터를 효율적으로 화면에 나타내기 위해서 각 아이템을 목록 형태로 화면에 표시하는데 사용됩니다. ListView와 유사하나 아래와 같은 성능 개선과 유연함으로 업그레이드 버전으로 많이 사용됩니다.
- ViewHolder 패턴을 기본적으로 구현하도록 하여 스크롤 시에 뷰를 재사용합니다.
- LayoutManager를 통해서 각 아이템의 배치를 수직, 수평, 격자 등 다양하게 배치할 수 있습니다.
RecyclerView 구현하기
1. RecyclerView를 담을 Layout 작성
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
2. 각 아이템 View 구성을 위한 xml 작성과 Item List 만들기
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:padding="10dp">
<TextView
android:id="@+id/tv_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp" />
<TextView
android:id="@+id/tv_dot"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="5dp"
android:text="."
android:textSize="20sp" />
<TextView
android:id="@+id/tv_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp" />
</LinearLayout>
// Item List 만들기
val fruitList = mutableListOf<String>()
fruitList.add("사과")
fruitList.add("복숭아")
fruitList.add("파인애플")
3. RecyclerView 어댑터와 ViewHolder 구현
- Adapter를 통해 RecyclerView에 띄워줄 아이템 전체를 관리할 수 있습니다.
- ViewHolder를 통해 아이템 하나하나 관리하여 개별 아이템에 대한 값들을 지정할 수 있습니다.
class RecyclerViewAdapter(
val fruitList: MutableList<String>
) : RecyclerView.Adapter<RecyclerViewAdapter.FruitViewHolder>() {
inner class FruitViewHolder(val binding: ItemFruitBinding) : RecyclerView.ViewHolder(binding.root) {
fun bind(item: String, position: Int) {
binding.apply {
tvCount.text = (position + 1).toString()
tvName.text = item
}
}
}
// 뷰 홀더 객체 생성
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): FruitViewHolder {
val inflater = parent.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val binding = ItemFruitBinding.inflate(inflater, parent, false)
return FruitViewHolder(binding)
}
// 데이터를 뷰 홀더에 바인딩
override fun onBindViewHolder(holder: FruitViewHolder, position: Int) {
holder.bind(fruitList[position], position)
}
// 전체 아이템 개수 리턴
override fun getItemCount(): Int {
return fruitList.size
}
}
4. LayoutManager 객체와 RecyclerView 어댑터 객체 생성 후 연결
val recyclerView = binding.recyclerView
// Adapter 연결하기
recyclerView.adapter = RecyclerViewAdapter(fruitList)
// LayoutManager 설정하기
recyclerView.layoutManager = LinearLayoutManager(this)
// 그리드로 만들고 싶다면
// recyclerView.layoutManager = GridLayoutManager(this)
728x90
반응형
'안드로이드 > 활용' 카테고리의 다른 글
[Android] ViewPager2 사용하기 (0) | 2023.07.31 |
---|---|
[Android] ListAdapter로 RecyclerView 효율적으로 사용하기 (0) | 2023.07.27 |
[Android] addView와 ListView (0) | 2023.07.25 |
[Android] Room 사용하기 (0) | 2023.07.24 |
[Android] SQLite 사용하기 (0) | 2023.07.24 |