Android RecyclerView 최상단/최하단으로 스크롤 이동하는 방법

✨ 개요

RecyclerView는 스크롤 가능한 리스트 UI를 제공하지만, 특정 위치로 이동해야 하는 경우도 많습니다.

이 포스팅에서는 최상단/최하단으로 부드럽게 스크롤 이동하는 방법을 소개합니다.


1. ✅ 기본 원리

2. ✅ 전체 예제 코드

2.1 레이아웃 파일

<androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="16dp" />

2.2 SimpleStringAdapter 코드

import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class SimpleStringAdapter(private val items: List<String>) :
  RecyclerView.Adapter<SimpleStringAdapter.ViewHolder>() {

  inner class ViewHolder(private val view: TextView) : RecyclerView.ViewHolder(view) {
    fun bind(item: String) {
      view.text = item
    }
  }

  override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
    val textView = TextView(parent.context).apply {
      setPadding(24, 32, 24, 32)
      textSize = 18f
    }
    return ViewHolder(textView)
  }

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

  override fun getItemCount(): Int = items.size
}

2.3 MainActivity 코드

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import com.js.sample.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {

    private lateinit var binding: ActivityMainBinding

    private val TAG: String = "MainActivity"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        // 샘플 데이터
        val items = (1..100).map { "Item $it" }
        val adapter = SimpleStringAdapter(items)
        val layoutManager = LinearLayoutManager(this)

        with(binding) {

            recyclerView.layoutManager = layoutManager
            recyclerView.adapter = adapter

            topButton.setOnClickListener {
                recyclerView.smoothScrollToPosition(0)
            }

            downButton.setOnClickListener {
                recyclerView.smoothScrollToPosition(items.size - 1)
            }
        }

    }
}

3.💡 팁 & 참고사항

📌 참고: 데이터 수가 매우 많을 경우 scrollToPosition()이 더 적합할 수 있습니다.


4.🧠 결론



Related Posts