이번 포스트는
- 안드로이드 앱: 상품 메인 MVVM 클래스 구성1
신규작업소스(스프링부트API): https://github.com/kimilguk/shop-api
신규작업소스(안드로이드앱): https://github.com/kimilguk/shop-app
## 상품 메인 MVVM 클래스 구성1(아래순서)
- ProductMainViewModel.kt 추가: 상품 진입 로직을 실행하는 클래스
- ProductMainActivity.kt 추가: 상품 메인레이아웃 클래스(AndroidManifest.xml에 등록)
- ProductMainActivityUI.kt 추가: 상품 메인 화면 디자인 구현
- IntroActivity.kt 수정: SharedPreferences에 등록된 토큰이 있다면 상품메인화면으로 이동 추가
- SigninViewModel.kt 수정: 로그인 후 현재화면 종료 및 상폼 메인화면으로 입장 추가
- SignupViewModel.kt 수정: finishActivity() //회원가입 후 현재 화면 제거 코딩 추가
- 드로우어 레이아웃에 툴바에 검색메뉴 및 햄버거 버튼 추가
- drawerLayout has not been initialized 객체 초기화 에러가 발생해서 lazy 사용으로 느리게 객체를 로딩한다.
- private val ui by lazy { ProductMainActivityUI(getViewModel()) } //아래는 액티비티 코딩 전문
/**
* 상품 메인레이아웃 클래스 BaseActivity<제네릭제한타입> 상속
*/
class ProductMainActivity : BaseActivity<ProductMainViewModel>() {
override val viewModelType: KClass<ProductMainViewModel>
get() = ProductMainViewModel::class //객체생성=::=참조=생성자를 호출한다.
private val ui by lazy { ProductMainActivityUI(getViewModel()) } //ui객체생성
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
ui.setContentView(this) //drawerLayout has not been initialized 객체초기화 에러발생 방지
/*ProductMainActivityUI(getViewModel()) //위 초기 viewModelType객체를 주입
.setContentView(this) //UI화면 인플레이트(출력)*/
setupDrawerListener()
}
private fun setupDrawerListener() {
val toggle = ActionBarDrawerToggle(
this,
ui.drawerLayout,
ui.toolBar,
R.string.open_drawer_description,
R.string.close_drawer_description
)
ui.drawerLayout.addDrawerListener(toggle) //액션바 드로어토클 객체를 이벤트리스너로 등록
toggle.syncState() //네비게이션 드로어 뷰의 상태와 햄버거버튼의 상태 연동
}
}
- 실행 결과(아래)
코틀린 프로젝트12 (0) | 2022.03.31 |
---|---|
코틀린 프로젝트11 (0) | 2022.03.30 |
코틀린 프로젝트09 (0) | 2022.03.28 |
코틀린 프로젝트08 (0) | 2022.03.22 |
코틀린 프로젝트07 (0) | 2022.03.21 |
댓글 영역