이번편에서는 MainActivity에서 연결되어있는 프래그먼트를 연결해본다.
((4)편에서는 MainActivity를 Kotlin으로 변환하였었다)
1. onCreate 부분에서 아래의 액티비티를 복사한다.
2. activity_select_user.xml도 복사해주었다.
여기서
이런식으로 프리뷰가 뜨지않는다면...
위와 같이 디자인 서포트들을 임플리멘트 해보자.
3. 수명주기에 Protected... 로 붙어있는것들은 Override로 고친후
어뎁터가 있어야하므로 어탭터도 붙여준다.
4. FirestoreAdapter를 코틀린변환해서 보면, 일단 아래와같이 변환이 되어있는 부분을 오버라이딩으로 바꾼다.
아래는 바꾼 후이다.
이 부분에서는 QuerySnapshot이 nullable해야하므로 ?를 붙여준다.
위만 바꿔주면 어댑터는 손댈것이 없음.
5.
위 부분은
이렇게 바꿔준다. 위와 같이 바꾸어주니 문제가 있어 아래와 같이 바꾸었다.
6.
이 부분은 !!을 써서 낫널보장을 해준다.
이 부분은 RecylerViewAdapter를 제대로 재정의 해야하는데
RecylerViewAdapter부분을 보면 아래와 같다. 먼저 RequestOptions은 [Glide]에 관련한 것이다. 이를 implement한다.
임플리멘트 해주는김에 아래와같이 다했다.
PhotoView를 쓰기위해서는 메이븐 빌드 툴을 이용해야하므로 아래를 참고한다.
https://github.com/chrisbanes/PhotoView
그 뒤 다시 돌아와서
임포트를 해주면
item_select_user를 복사해온다.
코틀린스타일로 바꾸는 과정에서 CustomViewHolder의 빨간 밑줄은 CustomViewHolder가 inner Class로 선언 되있기 때문인데 이를 public으로 바꾸어준다.
onBindViewHolder에서 context를 가져오려면
viewHolder.itemView.context를 호출하면된다. 그리고, R.drawable.user를 추가해준다.
그 뒤 리퀘스트 옵션에서의 nullable을 not null로 고쳐준다.
해시맵이 put remove가 가능한 mutable map으로 바꾸어준다.
그 결과는 아래와 같다.
data도 mutable하게 바꾸어준다.
addOnCompleteListener 도 람다식으로 바꾸어주어 최종 변환된 함수는 다음과 같다.
다음편에서는 ChatActivity를 추가해보겠음.