[Android Studio] 리사이클러뷰 만들기

1. xml 파일에 리사이클러뷰를 넣어준다.

<activity_main.xml>

2. 리사이클러뷰에 들어갈 데이터를 만들어준다.

나같은 경우는 채팅 기능을 만들고있기 때문에 채팅 데이터를 만들어주었다.

<ChatData.kt>

data class ChatData(
    val nickname: String = "",
    val msg: String = "",
    val email: String = ""
)

3. 리사이클러뷰 아이템 xml 파일을 만들어준다.

이 디자인으로 아이템들이 들어가게된다.
<rv_item.xml>

4. 리사이클러뷰 어댑터를 만들어준다.

<RVAdapter.kt>

class RVAdapter(val items: MutableList<ChatData>, val context: Context) :
  RecyclerView.Adapter<RVAdapter.ViewHolder>() {

  override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RVAdapter.ViewHolder {
      //뷰홀더를 생성(레이아웃 생성)하는 코드 작성
     val view = LayoutInflater.from(context).inflate(R.layout.rv_item, parent, false)
      return ViewHolder(view)
  }

  override fun onBindViewHolder(holder: RVAdapter.ViewHolder, position: Int) {
      //뷰홀더가 재활용될때 실행되는 메소드 작성
      holder.bindItems(items[position])


  }

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

  inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
      fun bindItems(item: ChatData) {
          val rv_nickname = itemView.findViewById<TextView>(R.id.rv_nickname_textView)
          rv_nickname.text = item.nickname

          val rv_msg = itemView.findViewById<TextView>(R.id.rv_msg_textView)
          rv_msg.text = item.msg

          val rv_profile_btn = itemView.findViewById<Button>(R.id.rv_profile_btn)
          rv_profile_btn.setOnClickListener {
              Intent(context, ProfileActivity::class.java).apply {
                  putExtra("이메일", item.email)
                  putExtra("닉네임", item.nickname)
              }.run { context.startActivity(this) }
          }

      }
  }
}

5. MainActivity에서 어댑터를 연결해준다.

<MainActivity.kt>

  //리사이클러뷰 어댑터 연결
     val rv = findViewById<RecyclerView>(R.id.recycler_view)
     val rvAdapter = RVAdapter(items, this)
     rv.adapter = rvAdapter
     rv.layoutManager = LinearLayoutManager(this)

6. 끝!


좋은 웹페이지 즐겨찾기