0101011001010111

Android_ Recyclerview 만들기 본문

Kotlin/[스스로]Kotlin&안드로이드

Android_ Recyclerview 만들기

[진주] 2023. 9. 13. 17:30
728x90
반응형

다음 포스팅 내용은, RecyclerView를 만들기 위한 핵심과, 방법을 차근차근 정리해 보았다.

 

먼저 RecyclerView는 :

기본적으로 스크롤뷰가 포함되어있으므로, 스크롤뷰를 따로 넣지 않아도 스크롤 됩니다. (리스트뷰로 표현) 

 

 

 

 

RecyclerView의 기본 구조

1. Adapter(어댑터) : 데이터를 아이템 뷰과 연결하는 역할

2. ViewHolder(뷰홀더) : 아이템 뷰를 보유하고 표시하는 역할

3. LayoutManager : 아이템들의 배치 방식을 관리한다.

 

 

 

 

Adapter란 ?

 

 Adapter(어댑터) 는 안드로이드에서 리스트나 그리드 같은 데이터를 화면에 표시하는 데 도움을 주는 역할.

리스트나 그리드에 표시할 데이터와 레이아웃을 연결하는 역할을 하며, 데이터에 변경에 따라 화면을 업데이트 합니다.

 

 

 


 

RecyclerView 사용단계

1. 의존성 추가 build.gradle 파일에 RecyclerView 의존성을 추가합니다.

implementation ("androidx.recyclerview:recyclerview:1.3.1")

 

 

2. 아이템 레이아웃 생성 :  아이템 하나의 레이아웃을 작성합니다.

원하는 대로 만들어보기!

 

 

 

3. Adapter 생성 : RecyclerView.Adapter 클래스를 상속한 Adapter 클래스를 생성합니다.

https://vjinjoov.tistory.com/112

 

4. ViewHolder 생성: RecyclerView.ViewHolder 클래스를 상속한 ViewHolder 클래스를 생성합니다.

(이거 홀더는, 위의 블로그에 같이 정리되어있음) 

▼예시 

class MyAdapter(private val items: List<String>) : RecyclerView.Adapter<MyAdapter.MyViewHolder>() {

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val binding = ItemRecyclerviewBinding.inflate(LayoutInflater.from(parent.context), parent, false)
        return Holder(binding)
    }

    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.bind(items[position])
    }

    override fun getItemCount(): Int {
        return items.size
    }

    inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        fun bind(item: String) {
            itemView.textView.text = item
        }
    }
}

5.LayoutManger설정 : RecyclerView에 사용할 레이아웃 매니저를 설정합니다.

예시 ▼

class MainActivity : AppCompatActivity() {
    private lateinit var binding:ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        val items = listOf("Item 1", "Item 2", "Item 3", "Item 4", "Item 5")
        val adapter = MyAdapter(items)
        binding.recyclerView.adapter = adapter
        binding.recyclerView.layoutManager = LinearLayoutManager(this)

    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형