스팀 앱 개발기 #112 - 포스트 화면에서 보팅 리스트 화면으로 연결
시작 화면 추가
No. 112
2023. 11. 16 (목) | Written by @dorian-mobileapp
시작하며...
오늘은 포스트 화면에서 보팅 리스트 화면으로 이동을 구현했습니다. 후자는 이미 구현했구요. 태그 리스트 화면에서 포스트 항목의 보팅 갯수를 클릭하면, 보팅 리스트 화면으로 이동합니다. 마찬가지로 포스트 화면에서 업보팅/다운보팅 카운트를 클릭하면 그 화면을 시작하면 됩니다.
작업 내용
- BaseFragment
- 클래스에 보팅 리스트 화면 실행 메소드 구현
- PostFragment
- 업보팅/다운보팅 갯수 클릭시 보팅 리스트 화면 시작
- TagsFragment
- 이전에 구현했던 보팅 리스트 화면 실행 코드 삭제
BaseFragment - 클래스에 보팅 리스트 화면 실행 메소드 구현
TagsFragment 클래스에 구현했던 보팅 리스트 화면 실행 코드는 PostFragment에서도 사용하기 위해 부모 클래스인 BaseFragment 클래스로 옮겼습니다.
// open new activity to show upvoting list
fun startUpvoteListActivity(activeVotes: List<ActiveVote>) {
val upvotes = activeVotes.filter { vote ->
vote.isUpvote()
}.sortedByDescending { it.value }
if (upvotes.isEmpty()) {
return
}
val upvoteArrayList = ArrayList(upvotes)
Intent(requireActivity(), VoteListActivity::class.java).apply {
this.putExtra(VoteListActivity.INTENT_BUNDLE_VOTER_LIST, upvoteArrayList)
startActivity(this)
}
}
// open new activity to show downvoting list
fun startDownvoteListActivity(activeVotes: List<ActiveVote>) {
val downvotes = activeVotes.filter { vote ->
vote.isDownvote()
}.sortedByDescending { it.value }
if (downvotes.isEmpty()) {
return
}
val downvoteArrayList = ArrayList(downvotes)
Intent(requireActivity(), VoteListActivity::class.java).apply {
this.putExtra(VoteListActivity.INTENT_BUNDLE_VOTER_LIST, downvoteArrayList)
startActivity(this)
}
}
PostFragment - 업보팅/다운보팅 갯수 클릭시 보팅 리스트 화면 시작
업보팅 개수를 의미하는 textUpvotes 텍스트 뷰, 다운보팅 개수를 의미하는 textDownvotes 텍스트 뷰를 클릭하면 보팅 리스트를 시작하는 클릭 리스너를 구현했습니다.
private val textUpvotesClickListener = View.OnClickListener {
val postState = viewModel.flowPostState.value
if (postState is PostState.Success) {
startUpvoteListActivity(postState.post.activeVotes)
}
}
private val textDownvotesClickListener = View.OnClickListener {
val postState = viewModel.flowPostState.value
if (postState is PostState.Success) {
startDownvoteListActivity(postState.post.activeVotes)
}
}
GitHub Commit
보다 자세한 코드는 아래 commit을 참고하세요.
마치며...
진도가 많이 느려졌네요. 현재 상황을 좀 더 분명히 인지하고 속도를 좀 더 내보고자 합니다. 너무 천천히 작업하니 결과가 안 나오고 있더라구요.
지난 스팀 앱 개발기
- #111 - 시작 화면 추가
- #110 - 오류 수정: 지갑 화면 시작시 오류 토스트 뜸
- #109 - 개선: 태그 입력하고 검색 버튼 클릭 또는 엔터 키 누르면 키보드 닫기
- #108 - 개선: 태그 검색창에 엔터 키 적용
- #107 - 버그 수정: 태그 화면 복귀시 포스트 리스트 다시 로딩됨
- #106 - 포스트 화면 개발
- #105 - 포스트 화면의 로직 처리를 담당할 PostViewModel 클래스 개발
- #104 - 포스트 내용 읽기 기능을 Repository, Use Case 패턴에 적용
- #103 - 포스트 내용을 읽기 위한 bridge.get_discussion API 연동 코드 작성
- #102 - 포스트 내용을 읽기 위한 bridge.get_discussion API
- #101 - build.gradle에서 라이브러리 이름과 버전 통합
- #1 ~ #100
Layout provided by Steemit Enhancer hommage by ayogom
Posted through the ECblog app (https://blog.etain.club)
안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.
[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.
안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!
Thank you, friend!
I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
please click it!
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)
The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.