상세 컨텐츠

본문 제목

코틀린 프로젝트10

JSP·자바·코틀린

by 김일국 2022. 3. 29. 19:37

본문

이번 포스트는

- 안드로이드 앱:  상품 메인 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() //네비게이션 드로어 뷰의 상태와 햄버거버튼의 상태 연동
    }
}

- 실행 결과(아래)

툴바 메뉴에 타이틀과 검색아이콘, 햄버거 메뉴 추가한 화면(위)
햄버거 버튼을 클릭하면 드로어 navigationView 객체가 왼쪽에서 나타난다.(위)

'JSP·자바·코틀린' 카테고리의 다른 글

코틀린 프로젝트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

관련글 더보기

댓글 영역