[Android] Fragment에서 RecyclerView 구현하는 방법

알린·2024년 2월 15일
0

Android

목록 보기
3/21

Activity와 Fragment의 구현 차이

프래그먼트의 생명주기를 따르면,
onCreate() 함수가 아닌 onCreateView() 함수를 프래그먼트에 그릴 뷰를 생성할 때 호출해야한다.
즉, 뷰 바인딩 객체를 생성할 때 oncreateview() 함수 내에서 수행해야한다.
해당 코드는 다음과 같다.

	private lateinit var binding: FragmentChatBinding
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
    ): View {
        binding = FragmentChatBinding.inflate(inflater)
        return binding.root
        // Activity에서는 setContentView(binding.root)으로 작성
    }

레이아웃 매니저 설정 시 Activity에서는

binding.chatListRecyclerView.layoutManager = 
			LinearLayoutManager(this) 

이지만,
Fragment에서는 다음 코드로 작성해야한다.

binding.chatListRecyclerView.layoutManager =
            LinearLayoutManager(requireContext()) 

전체 코드

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.bottleshop_app.ChatListRecyclerView.ChatListAdapter
import com.example.bottleshop_app.ChatListRecyclerView.ChatListItem
import com.example.bottleshop_app.databinding.FragmentChatBinding

class ChatFragment : Fragment() {
    private lateinit var binding: FragmentChatBinding
    private lateinit var adapter: ChatListAdapter

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
    ): View {
        binding = FragmentChatBinding.inflate(inflater)

        setRecyclerView()

        return binding.root
    }

    private fun setRecyclerView() {
        val listItem = mutableListOf<ChatListItem>()
        // 데이터 예시
        listItem.add(ChatListItem(R.drawable.ic_info, "가게 1", "네 그럼 금일 3시에 뵙겠습니다."))
        listItem.add(ChatListItem(R.drawable.ic_info, "가게 2", "추천해주실 수 있으실까요?"))
        listItem.add(ChatListItem(R.drawable.ic_info, "가게 5", "재고 있나요?"))
        listItem.add(ChatListItem(R.drawable.ic_info, "가게 3", "죄송하지만 문의주신 와인은 현재 재고가 없습니다."))
        listItem.add(ChatListItem(R.drawable.ic_info, "가게 4", "네 감사합니다!"))

        adapter = ChatListAdapter(listItem)  // 어댑터 객체 할당
        binding.chatListRecyclerView.adapter = adapter  // 리사이클러뷰 레이아웃에 어댑터 설정
        binding.chatListRecyclerView.layoutManager =
            LinearLayoutManager(requireContext())  // 레이아웃 매니저 설정
        // Activity에서는 LinearLayoutManager(this)로 작성

    }

    override fun onDestroyView() {
        super.onDestroyView()
    }
}
profile
Android 짱이 되고싶은 개발 기록 (+ ios도 조금씩,,👩🏻‍💻)

0개의 댓글