inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

리사이클러뷰 질문 드려요..

584

hai

작성한 질문수 3

0

스크린샷 2022-11-16 오후 10.22.17.png

강사님 물어볼 곳이 없어서 질문 드려요. 제가 파이어베이스 연동해서 리사이클러뷰 안에 리사이클러뷰를 만들고 있는데 월요일 보시면 중간에 삭제 하면 layout은 안없어지더라고요..

상위 리사이클러뷰 코드입니다.

override fun onBindViewHolder(holder: ScheduleAdapter.ViewHolder, position: Int) {

    val day: ProfLectureTimeTable = items[position]

    with(holder) {
        day_Text.text = day.days

        //자식 레이아웃 매니저 설정
        val layoutManager = LinearLayoutManager(
            schedule_RV.context,
            LinearLayoutManager.HORIZONTAL,
            false
        )

        //자식 어댑터 설정
        val dayAdapter = DayAdapter(day.lecture1)
        schedule_RV.layoutManager = layoutManager
        schedule_RV.adapter = dayAdapter

        dayAdapter.setItemClickListener(object: DayAdapter.ItemClick{
            override fun onItemClick(view: View, position: Int) {
                val mDialogView = LayoutInflater.from(view.context).inflate(R.layout.remove_dialog, null)
                val mBuilder = AlertDialog.Builder(view.context)
                    .setView(mDialogView)
                    .setTitle("삭제")
                    .setMessage("내용을 삭제하시겠습니까?")
                val alertDialog = mBuilder.show()
                alertDialog.findViewById<Button>(R.id.okBtn)?.setOnClickListener {
                    when(day.lecture1?.get(position)?.day){
                        "월요일" -> {
                            FBRef.LectureRef.child("A").child("lecture1").child(position.toString()).removeValue()

                        }
                        "화요일" -> {
                            FBRef.LectureRef.child("B").child("lecture1").child(position.toString()).removeValue()
                        }
                        "수요일" -> {
                            FBRef.LectureRef.child("C").child("lecture1").child(position.toString()).removeValue()
                        }
                        "목요일" -> {
                            FBRef.LectureRef.child("D").child("lecture1").child(position.toString()).removeValue()
                        }
                        "금요일" -> {
                            FBRef.LectureRef.child("E").child("lecture1").child(position.toString()).removeValue()
                        }
                    }
                    alertDialog.dismiss()
                }

                alertDialog.findViewById<Button>(R.id.noBtn)?.setOnClickListener {
                    alertDialog.dismiss()
                }
            }
        })
        dayAdapter.notifyItemRemoved(position)
    }
}

android firebase kotlin

답변 1

0

개복치개발자

질문이 잘 이해가 가지 않습니다.

좀 더 자세히 알려주시겠어요?

0

hai

부모Adapter인 ScheduleAdapter 안에 자식Adapter인 DayAdapter가 있는 nested 리사이클러뷰입니다. 월요일에 보시면 2번째가 다른 것과 다르게 비어있는데 위에 코드처럼 삭제 다이얼로그를 만들어서 아이템 클릭시 다이얼로그가 화면에 나오도록 했고 제 예상은 파이어베이스에서 삭제하면 해당 아이템 레이아웃까지 사라지는 거였어요. 예상과 다르게 파이어베이스에선 삭제 되었지만 레이아웃은 삭제가 안되었습니다. 결론은 파이어베이스에선 데이터가 삭제되었지만 레이아웃은 삭제가 되지 않는게 문제입니다..

중간에서 삭제하면 위의 화면이 나오고, 위의 화면에서 추가를 하면 정상적으로 추가가 됩니다. 아이템의 마지막 position에서 삭제할 때도 정상적으로 작동되요.

0

개복치개발자

삭제하고 recyclerview의 item size를 한개 줄여주면 되는거 아닌가요?

0

개복치개발자

아이템을 삭제하고 recyclerview를 다시 그릴 떄 만약 item개수가 7개(월~일)이면 6개로 설정해주면 될 것 같이 보입니다.

https://www.youtube.com/watch?v=LQmGU3UCOPQ

이런 영상을 참고해보시겠어요?

0

hai

혹시 생성된 viewholder 자체를 삭제하는 법이 있나요? 그러면 레이아웃도 사라지지 않을까요?

주사위앱 소개 및 레이아웃 설정 문제

0

62

2

안드로이드 에뮬레이터가 실행이 안 되요...ㅠ

0

111

2

30 강 소스 좀 올려 주십시요

0

83

2

onBackPressed 함수가 동영상 하고 다르게 동작합니다.

0

93

2

ListView 초기 실행 안됩니다.

0

99

2

코딩을 완료하고난후 앱 실행시 자동 종료

0

73

2

datavinding에서 오류가 납니다.

0

54

1

안드로이드 스튜디오 버전 차이로 초기 empyt activity 선택하면 안됩니다.

0

118

2

context의 구별에 대하여

0

71

2

"프롤로그에서 ..." 오류 관련해 직전 질문에 대한 추가 질문입니다.

0

71

2

"프롤로그에서 콘텐츠가 허용되지 않습니다." 오류

0

162

3

해결완료

1

191

2

databinding 설정후 run하면 에러(해결)

0

226

2

databinding 설정 이후 실행시 에러

0

275

4

안드로이드 입문하는 사람입니다.

0

72

1

Firebase uid

0

79

3

activity_main 화면 다름

0

118

2

강의화면과 다른데 맞게진행되는것인가요...????

0

108

2

파이어베이스 질문

0

76

2

ActivityMainBinding에 오류가 납니다

0

137

2

선생님 onBackPressed 작동이 안되는거 같습니다

0

123

2

>app>res>layout 이 존재하지 않습니다.

0

120

2

안드로이드 스튜디오 미어캣 버전 사용 한글 깨짐

0

756

2

안드로이드 스튜디오 오류 발생 시 대처 방법은 요?

0

292

2