프래그먼트의 생명주기를 따르면,
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()
}
}