Kotlin/TIL

Visibility 코드 단순화

내손은개발 🐾 2024. 6. 2. 23:38

팀 프로젝트 중 수정버튼을 누르면 같은 View에서 정보를 수정할 수 있게 만들어 주는 부분을 진행 중이다.

더 좋은 방법이 있는지는 모르겠지만 단순히 textView로 보여지고 있는 부분의 visibility값을 gone으로 가리고 editText로 바꿔주는 걸로 진행하고 있었다.

    private fun editMode() {
        isEditMode = !isEditMode

        if (isEditMode) { //편집모드
            binding.ivEditProfile.visibility = View.GONE
            binding.tvAddTagTypeOfDevelopment.visibility = View.VISIBLE
            binding.etUserName.visibility = View.VISIBLE
            binding.etUserSelfIntroduction.visibility = View.VISIBLE
            binding.btnCompleteEdit.visibility = View.VISIBLE

            binding.tvUserName.visibility = View.GONE
            binding.tvUserSelfIntroduction.visibility = View.GONE
        } else {
            binding.ivEditProfile.visibility = View.VISIBLE
            binding.tvAddTagTypeOfDevelopment.visibility = View.GONE
            binding.etUserName.visibility = View.GONE
            binding.etUserSelfIntroduction.visibility = View.GONE
            binding.btnCompleteEdit.visibility = View.GONE

            binding.tvUserName.visibility = View.VISIBLE
            binding.tvUserSelfIntroduction.visibility = View.VISIBLE

        }
    }

 

 

지금 내 정보를 수정하는 부분에서 이름, 소개, 태그 버튼 등 보여지고 가려지고 있는데 추가할게 아직 많이 남아있다.

그렇다는건 추가할 수록 코드는 더 길어진다는건데.. 

코드를 간결하게 해야할 필요를 느꼈다.

 

그나마 생각해낸 방법은 

편집모드에서 textView를 editText로 바꾸니까 나눠서 배열에 담아 처리

val editViews = arrayOf(etUserName, etUserSelfIntroduction, btnCompleteEdit)
val textViews = arrayOf(tvUserName, tvUserSelfIntroduction)

 

editViews.forEach { it.visibility = if (isEditMode) View.VISIBLE else View.GONE }
textViews.forEach { it.visibility = if (isEditMode) View.GONE else View.VISIBLE }

 

사실 코드의 가독성만 좋아진 부분이라서 분명 뭔가 더 좋은 방법이 있을 것같은데 알게되면 글을 추가해야겠다.

 

 

 

'Kotlin > TIL' 카테고리의 다른 글

Youtube API에서 받은 영상 재생  (0) 2024.05.22
Android - Github API 검색 (TIL 05.08)  (0) 2024.05.08
TIL (05.07)  (0) 2024.05.07
Postman 사용하기 (TIL 05.02)  (0) 2024.05.02
Android -GoogleMap 사용 (TIL 05.01)  (0) 2024.05.01