[Android] RecyclerView 사용하기(2)

1 분 소요

Intro

이전 게시글을 통해서 recyclerview를 사용했을 때 좋은 점과 어떠한 방식으로 recyclerview가 적용되는지 살펴보았다.

그렇다면 이제는 본격적으로 recyclerview를 이용해서 목록을 구성해보자!!


🙋‍♀️ RecyclerView 요소 추가하기

  • recyclerview.xml
<?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">
    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/recycler_view"/>
</LinearLayout>

👩 recyclerview를 표시하고자 하는 화면에 RecycleListView 요소를 추가한다.


🙋‍♀️ RecyclerView item 레이아웃 구성하기

  • recyclerview_todo.xml

  • RecyclerView 속 각 데이터 를 구성할 뷰 레이아웃이다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:background="#EEEBEB"
    android:layout_margin="10dp"
    android:padding="10dp"
    android:gravity="center_vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <CheckBox
        android:layout_width="30dp"
        android:layout_height="20dp"/>
    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:text="사과 먹기"/>
</LinearLayout>


🙋‍♀️ Adapter 구성하기

  • adapter는 공식 홈페이지에서 제공하는 틀을 원하는 방식대로 적용하면 된다.

아래 코드는 공식 홈페이지에서 제공하는 adapter를 수정한 것이다.

class RecyclerViewAdapter (private val dataSet: ArrayList<String>): RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>(){
    //provide a reference to the type of views that you are using
    //(custom ViewHolder)

    class ViewHolder(view: View): RecyclerView.ViewHolder(view){
        val textView: TextView

        init{
            //define click listener for the viewholder's view
            textView= view.findViewById(R.id.textview)
        }
    }

    //create new views (inboked by the layout manager)
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
        //create a new view, which defines the UI fo the list item
        val view = LayoutInflater.from(parent.context).inflate(R.layout.recyclerview_todo, parent, false)

        return ViewHolder(view)
    }

    //replace the contents of a view (invoked by the layout manager)
    override fun onBindViewHolder(holder: ViewHolder, position: Int) {
        //get element from your dataset at this position and replace the
        //contents of the view with that element
        holder.textView.text = dataSet[position]
    }

    override fun getItemCount() = dataSet.size
}

🙋‍♀️ adapter, layoutmanager 적용하기

  • RecyclerViewActivity.kt

  • 화면 속 recyclerview에 어댑터레이아웃 매니저를 적용해준다.

class RecyclerViewActivity : AppCompatActivity() {
    private lateinit var binding: RecyclerviewBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = RecyclerviewBinding.inflate(layoutInflater)
        val view = binding.root
        setContentView(view)
        setTitle("RecyclerView")

        //dataset 구성
        val dataSet = ArrayList<String>()
        dataSet.add("사과 먹기")
        dataSet.add("김치 볶음밥 먹기")
        dataSet.add("떡볶이 먹기")
        dataSet.add("마라탕 먹기")
        dataSet.add("감귤 먹기")

        //adapter와 layoutmanager 적용
        val adapter = RecyclerViewAdapter(dataSet)
        binding.recyclerView.adapter = adapter
        binding.recyclerView.layoutManager = LinearLayoutManager(this)
    }
}

👩 그렇다면 그 결과를 함께 살펴보자.

결과

  • 넣어준 데이터 셋의 요소들이 아이템 뷰가 적용돼 recyclerview에 하나씩 추가된 것을 확인할 수 있다.

그렇다면 이번 게시글은 이만 마무리하겠다.

끝~ ~(˘▾˘~)


✍ GIT REPO


📃참고

  • https://recipes4dev.tistory.com/154
  • https://developer.android.com/guide/topics/ui/layout/recyclerview?hl=ko

댓글남기기