티스토리 뷰
반응형
Intro
RecyclerView를 사용할 때, Divider를 종종 View태그를 사용해 만들어 사용하기도 한다.
Item을 커스텀하여 사용하고, 가변성이 필요하거나 style을 간단하게 입히려면 좋은 방법이다.
만약 단순하게 Divider가 필요한 경우에도 View를 사용해야하는 귀찮음이 있다.
또한 레이아웃이 복잡해 졌을 때, 메모리 관리에도 별로 좋지 않은 방법이라고 생각한다.
반응형
Summary
오늘은 간단하게 Decorator를 사용해 RecyclerView에 Divider를 넣어주고자 한다.
Using
1. 기본 화면 만들기
RecyclerView를 추가하고 Adapter, Item을 만들어 준다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
</LinearLayout>
</layout>
item_recyclerview.xml
<?xml version="1.0" encoding="utf-8"?>
<layout>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/item_textView"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="TEST" />
</LinearLayout>
</layout>
MyAdapter.kt
class MyAdapter: RecyclerView.Adapter<MyViewHolder>() {
var datas: List<String> = listOf()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder =
MyViewHolder(
LayoutInflater.from(parent.context).inflate(
R.layout.item_recyclerview,
parent,
false
)
)
override fun getItemCount(): Int = datas.size
override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.bind(datas[position])
}
}
open class MyViewHolder(item: View): RecyclerView.ViewHolder(item) {
val binding: ItemRecyclerviewBinding? = DataBindingUtil.bind(item)
fun bind(data: String) {
binding?.itemTextView?.text = data
}
}
그리고 간단하게 리스트를 만들어보자.
MainActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
val adapter = MyAdapter()
binding.rvMain.adapter = adapter
adapter.datas = listOf("양파", "감자", "오이")
adapter.notifyDataSetChanged()
}
그러면 아래와 같은 화면이 만들어지게 된다.
1. Decorator 추가하기
여기서 Decorator를 추가해 Divider를 넣어주자.
VERTICAL 적용
recyclerView.addItemDecoration(
DividerItemDecoration(this, VERTICAL)
)
가로 형태의 리스트에도 적용이 가능하다.
아이템의 크기와 RecyclerView 크기를 조정 후 아래의 코드를 적용해본다.
HORIZONTAL 적용
recyclerView.addItemDecoration(
DividerItemDecoration(this, HORIZONTAL)
)
이런 간단한 방법으로 목록의 가시성을 높일 수 있다.
# 전체코드
https://github.com/rlwhd0716/tistory_library/tree/main/Android/RecyclerViewExample
반응형
'Android' 카테고리의 다른 글
[Android] TTS 실행하기 (0) | 2024.01.16 |
---|---|
[Android] ImageView 회전시켜서 보여주기 (0) | 2024.01.15 |
[Android] 버전 카탈로그(Version Catalog) 적용하기 .toml (0) | 2023.08.22 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 격파르타 후기
- Java
- 함수
- 연산자
- 격파르타 합격후기
- Android
- 코틀린
- dart
- Swift
- Kotlin
- rotate
- 스위프트
- 아이폰앱개발
- 격파르타 장점
- 버전카타로그
- 변수
- .toml
- 자바
- 음성재생
- NoAnimation
- toml
- Xcode
- 아이폰
- sqld 자격증 합격
- IOS
- FLUTTER
- rotation
- gem update
- ~=
- 안드로이드
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함