스팀 앱 개발기 #147 - 개발 완료: Jetpack Compose 마이그레이션 2단계

개발 완료: Jetpack Compose 마이그레이션 2단계

No. 146
2026. 04. 27 (월) | Written by @dorian-mobileapp

저번 포스트에서 말씀드린 Jetpack Compose로 마이그레이션. 그중 2단계를 진행했습니다. 요약 내용은 다음과 같습니다.


Jetpack Compose 마이그레이션 2단계 요약

작업 개요

VoteListActivityVoteListAdapter를 Jetpack Compose 기반으로 전환했습니다.


변경 파일 목록

파일변경 내용
VoteListActivity.ktBaseActivityComponentActivity 전환, Compose UI 적용
VoteListViewModel.ktMutableLiveDataStateFlow 전환, @HiltViewModel 추가
VoteListAdapter.kt삭제 (Composable로 대체)
BaseFragment.kt미사용 import 제거 (Intent, ActiveVote, VoteListActivity)

주요 변경 내용

VoteListActivity

  • BaseActivity<ActivityVoteListBinding, VoteListViewModel>ComponentActivity + @AndroidEntryPoint
  • DataBinding, RecyclerView 어댑터, LiveData Observer 제거
  • setContent {} 로 Compose UI 적용
  • enableEdgeToEdge로 status bar 색상을 top bar(CaribbeanGreen)와 통일

VoteListViewModel

  • @HiltViewModel + @Inject constructor() 추가
  • MutableLiveData<ArrayList<ActiveVote>>MutableStateFlow<List<ActiveVote>>
  • setVotes() 메서드 추가

신규 Composable 함수

함수역할
VoteListScreenScaffold + top bar + 검색 필드 + 리스트
VoteItem프로필 이미지, 계정명, 보팅 비율, 보팅 금액 표시
VoteItemPreview미리보기

VoteListAdapter 대체 내용

기존 (RecyclerView)변경 (Compose)
Filterable 인터페이스remember(votes, searchQuery)로 반응형 필터
OnProfileImageClickListeneronProfileImageClick: (String) -> Unit 콜백
LayoutVoteItemBindingVoteItem Composable
검색 버튼 클릭으로 필터링입력 즉시 반응형 필터링
OutlinedTextField (테두리)TextField (아래쪽 선만 표시)

GitHub Commit

보다 자세한 코드는 아래 commit을 참고하세요.


지난 스팀 앱 개발기


Layout provided by Steemit Enhancer hommage by ayogom

Posted using SteemX

Sort:  

Upvoted! Thank you for supporting witness @jswit.

🎉 Congratulations!

Your post has been upvoted by the SteemX Team! 🚀

SteemX is a modern, user-friendly and powerful platform built for the Steem community.

🔗 Visit us: www.steemx.org

✅ Support our work — Vote for our witness: bountyking5

banner.jpg