티스토리 뷰
텍스트 아이템 목록을 보여주는 안드로이드의 RecyclerView 구현이다. 이 예제에서 RecyclerView를 설정과 사용자 지정 어댑터를 구현하고, ViewHolder를 생성하는 방법을 보여준다. 필요에 따라 더 복잡한 레이아웃, 인터랙션 로직 또는 애니메이션을 추가할 수 있다.
- Dependecies 추가
: 우선 RecyclerView의 dependency를 build.gradle에 추가한다.
dependencies { implementation 'androidx.recyclerview:recyclerview:1.2.1' }
- RecyclerView의 Layout 생성
: 해당 activity layout XML 파일(예: activity_main.xml)에 RecyclerView를 추가한다.
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout 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" tools:context=".MainActivity"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="0dp" android:layout_height="0dp" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/> </androidx.constraintlayout.widget.ConstraintLayout>
- RecyclerView에 아이템에 대한 Layout 기입
: RecyclerView 의 각 아이템을 위한 새로운 XML layout 파일(예: list_item.xml)을 생성한다. 이 layout은 어떻게 각 아이템이 보여질지 정의한다.
<?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/textViewItem" android:layout_width="match_parent" android:layout_height="wrap_content" android:padding="16dp" android:textSize="18sp" android:textColor="@android:color/black"/>
- Adapter 클래스 생성
: RecyclerView.Adapter를 확장한 새로운 Java 혹은 Kotlin 클래스 (MyAdapter)를 생성한다. 이 class는 목록에 있는 데이터 view를 생성하고 바인딩하는 것을 담당한다.
class MyAdapter(private val itemList: List<String>) : RecyclerView.Adapter<MyAdapter.MyViewHolder>() { // ViewHolder class that holds the item layout class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val textView: TextView = itemView.findViewById(R.id.textViewItem) } // Inflates the item layout and creates the ViewHolder override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.list_item, parent, false) return MyViewHolder(view) } // Binds the data to the views in the ViewHolder override fun onBindViewHolder(holder: MyViewHolder, position: Int) { holder.textView.text = itemList[position] } // Returns the total number of items override fun getItemCount(): Int { return itemList.size } }
- Activity 클래스에 RecyclerView 준비
: Activity 클래스(예: MainActivity)에 RecyclerView를 준비하고, LayoutManager를 할당 후 샘플 데이터와 함께 Adapter를 설정한다.
class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Reference to the RecyclerView val recyclerView = findViewById<RecyclerView>(R.id.recyclerView) // Sample data to display in the RecyclerView val items = listOf("Item 1", "Item 2", "Item 3", "Item 4", "Item 5") // Set LayoutManager for RecyclerView recyclerView.layoutManager = LinearLayoutManager(this) // Set Adapter for RecyclerView recyclerView.adapter = MyAdapter(items) } }
- 앱 실행
: 앱을 실행하면, RecyclerView 를 활용한 텍스트 아이템을 가진 샘플 목록이 띄워진다.
* 설명
- Adapter (MyAdapter)
- 각 아이템 view에 데이터(itemList)를 바인딩한다.
- list의 각 아이템에 대한 아이템 layout(list_item.xml)을 인플레이션한다.
- ViewHolder (MyViewHolder)
- 이 경우 TextView와 같이 각 아이템 내부의 view에 대한 references를 보유한다.
- Adapter 내부에 생성되어 findViewById를 반복적으로 호출하지 않도록 한다.
- LayoutManager
- MainActivity에서 LinearLayoutManager를 사용해 항목을 세로 목록으로 정렬한다. Grid에는 GridLayoutManager를 사용하거나 사용자 정의 그리드를 만들 수 있다.
반응형
'기술(Tech, IT) > 안드로이드(Android)' 카테고리의 다른 글
[Android] ViewCompat.setOnApplyWindowInsetsListener (2) | 2024.11.05 |
---|---|
[Android] Location (0) | 2024.11.04 |
[Android] RecyclerView (리싸이클러 뷰) - 1 (0) | 2024.09.27 |
[Android] Snackbar Vs. Toast (1) | 2024.09.27 |
[Android] Empty Activity Vs. Empty Views Activity (0) | 2024.09.21 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- The Economist
- machine learning
- Python
- 리트코드
- The Economist Espresso
- 파이썬
- vertex shader
- ml
- defaultdict
- tf-idf
- 오블완
- 이코노미스트
- C++
- leetcode
- 투 포인터
- 안드로이드
- 소켓 프로그래밍
- Android
- Computer Graphics
- 머신 러닝
- 이코노미스트 에스프레소
- min heap
- join
- Hash Map
- I2C
- java
- 딕셔너리
- DICTIONARY
- socket programming
- 티스토리챌린지
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함
반응형