파이어베이스를 기반으로한 테스트용 채팅 앱구현 Android Chatting Test App based on Firebase with Kotlin(5)

이번편에서는 MainActivity에서 연결되어있는 프래그먼트를 연결해본다.

 

((4)편에서는 MainActivity를 Kotlin으로 변환하였었다)

 

 

1. onCreate 부분에서 아래의 액티비티를 복사한다.

 

2. activity_select_user.xml도 복사해주었다.

 

여기서 

 

이런식으로 프리뷰가 뜨지않는다면... 

위와 같이 디자인 서포트들을 임플리멘트 해보자.

 

3. 수명주기에 Protected... 로 붙어있는것들은 Override로 고친후

 

어뎁터가 있어야하므로 어탭터도 붙여준다.

 

4. FirestoreAdapter를 코틀린변환해서 보면, 일단 아래와같이 변환이 되어있는 부분을 오버라이딩으로 바꾼다.

 

 아래는 바꾼 후이다.

 

 

 

이 부분에서는 QuerySnapshot이 nullable해야하므로 ?를 붙여준다.

 

 

위만 바꿔주면 어댑터는 손댈것이 없음.

 

 

 

5. 

 

위 부분은

https://stackoverflow.com/questions/48051190/kotlin-one-type-argument-expected-for-class-for-abstract-generic-view-holder 를 참고하여

이렇게 바꿔준다. 위와 같이 바꾸어주니 문제가 있어 아래와 같이 바꾸었다.

 

 

 

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를 추가해보겠음.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유