말 그대로 리사이클러뷰 안에 리사이클러뷰를 넣어서 중첩해서 넣으려고 합니다.
데이터는 파이어베이스에서 불러왔습니다.
부모 리사이클러뷰까지는 구현에 성공했고 자식 리사이클러뷰의 파이어베이스 데이터 불러오기부터 어댑터 연결을 부모 리사이클러뷰 어댑터에 작성했습니다.
잘 동작하는 부모 리사이클러뷰 코드를 그대로 가져와서 자식 리사이클러뷰에 필요한 클래스나 변수에 맞게 변경만 했습니다.
부모 리사이클러뷰에서 자식 리사이클러뷰에 넣을 데이터는 잘 불러오는 것을 로그로 확인했습니다.
아래 코드는 부모 리사이클러뷰 구현 시 데이터 집어넣는 glide 등등이 들어있는 bind() 안에 들어있는 코드입니다.
val db = FirebaseFirestore.getInstance()
val queryText2: Query = db.collection("spiceTable")
var queryText3: Query
val storageRef2 = Firebase.storage.reference.child("scentnote/spiceimage")
var j: Int = 1
var detailSpiceList = mutableListOf<SpiceDetailValue>()
queryText2.get().addOnSuccessListener { documents ->
//부모 리사이클러뷰 항목 내에서 반복하는 반복문
.addOnSuccessListener { documentx ->
//자식 리사이클러뷰 항목 파이어베이스에서 불러오기
}.addOnCompleteListener {
nAdapter = context?.let { NoteSubRecyclerviewAdapter(it, detailSpiceList) }
fragment2NoteParentItemBinding?.fragment2NoteChildList?.adapter = nAdapter
val gridLayoutManager = GridLayoutManager(context, 4)
fragment2NoteParentItemBinding?.fragment2NoteChildList?.layoutManager = gridLayoutManager
}
detailSpiceList = mutableListOf<SpiceDetailValue>()
자식 리사이클러뷰의 어댑터가 NoteSubRecyclerViewAdapter인데, 그 파일에는 어디에 로그를 찍어도 아예 나오질 않습니다. 제가 생각하기에는 부모-자식 어댑터 연결이 안 된 것 같습니다.
어댑터를 연결하는 위 문장은 부모 리사이클러뷰를 연결할 때와 동일한 방식이며 자식 리사이클러뷰와 연결하는 부분 자체를 Fragment에도 넣어봤는데도 결과가 똑같았습니다.
그리고 로그를 onSuccessListner 마지막에 한번, onCompleteListener 시작할 때 한번 찍어봤는데,
onCompleteListener 부분의 로그가 먼저, onSuccessListner 부분의 로그가 나중에 나옵니다.
서버 데이터 불러오는 시간때문인가 싶어서 1초 대기 후 onCompleteListener가 동작하도록 해봤는데 그냥 로그가 1초 늦을 뿐 똑같습니다.
도와주시면 감사하겠읍니다...