스팀 앱 - 개발 중: 댓글 리스트 팝업(바텀시트) 구현

스팀 앱 - 개발 중: 댓글 리스트 팝업(바텀시트) 구현

2024. 10. 22 (화) | Written by @dorian-mobileapp

며칠만에 다시 포스트를 쓰네요. 오늘은 댓글 리스트 팝업을 구현하는 클래스에 대해 정리합니다

댓글 리스트 팝업(바텀시트)을 구현하는 클래스

바텀시트를 정의하는 방법은 안드로이드 개발 팁 #86을 참고하세요.

class ReplyListDialogFragment : BottomSheetDialogFragment() {

    private var _binding: FragmentReplyListDialogBinding? = null

    private val viewModel: PostContentViewModel by lazy {
        // Set owner parameter to requireActivity() to access the view model PostContentFragment object created
        ViewModelProvider(requireActivity()).get(PostContentViewModel::class.java)
    }

    // This property is only valid between onCreateView and onDestroyView.
    private val binding get() = _binding!!

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        _binding = FragmentReplyListDialogBinding.inflate(inflater, container, false)
        return binding.root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        binding.imageClose.setOnClickListener { dismiss() }

        lifecycleScope.launch {
            viewModel.flowPostState.collect(postContentStateCollector)
        }
    }

    override fun onDestroyView() {
        super.onDestroyView()
        _binding = null
    }

    private val postContentStateCollector = FlowCollector<PostContentState> { state ->
        when (state) {
            is PostContentState.Success -> {
                binding.listReply.adapter = ReplyListAdapter(state.replies, state.post)
            }
            else -> {}
        }
    }

}

이 프래그먼트 ReplyListDialogFragment의 뷰모델은 PostContentFragment의 PostContentViewModel 뷰모델과 동일합니다. 같은 뷰모델을 두 프래그먼트가 공유하는 거죠. 이 뷰모델은 이미 포스트 내용을 로딩하였구요. ReplyListDialogFragment 객체의 postContentStateCollector 필드는 정의되자마자 포스트 내용을 담는 PostContentState를 collect하고 이를 리스트에 보여줄 수 있습니다.


Layout provided by Steemit Enhancer hommage by ayogom


Posted through the ECblog app (https://blog.etain.club)
Sort:  

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.


안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Coin Marketplace

STEEM 0.21
TRX 0.20
JST 0.035
BTC 91063.28
ETH 3157.52
USDT 1.00
SBD 3.02