비비디바비비부
프로그래밍저장소
비비디바비비부
전체 방문자
오늘
어제
  • 프로그래밍 (72)
    • 안드로이드 (5)
      • 잡다한 지식 (40)
      • Compose (2)
      • Design (3)
      • Project (6)
    • 리액트 (4)
      • 프로젝트 (1)
      • 잡다한 지식 (1)
    • 알고리즘 (3)
      • 알고리즘 문제 (3)
    • AI (4)
      • 딥러닝 (4)
    • CS (2)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
비비디바비비부

프로그래밍저장소

[kotlin] 데이터 클래스 활용법
안드로이드/잡다한 지식

[kotlin] 데이터 클래스 활용법

2023. 5. 18. 11:37

Data Class에서 내가 자주 사용하는 활용

1. Response를 받은 데이터들을 내가 사용할 Data로 가공하기

// Response 받을 데이터 클래스
data class DataResponse(
    val a: String,
    val b: String,
    val c: String,
    val d: Int,
)
// DataResponse클래스를 MyData class로 변경하기 위한 함수
fun DataResponse.toMyData(): MyData {
    val dataList = listOf<String>(a, b)
    return MyData(
        dataList = dataList,
    )
}
// 내가 UI에서 사용할 데이터
data class MyData(
    val a: String,
    val b: String,
)

나는 Response에서 필요하지 않는 필드 값을 사용하지 않기 위해서 MyData처럼 DataClass를 만든 뒤 fun DataResponse.toMyData()같은 형식으로 MyData를 생성할 수 있도록 만들어 준다.

// repository.getData()는 DataResponse를 받는 함수
val myData = repository.getData().toMyData()

그 후 이런 식으로 나는 myData를 받은 뒤 UI에 적용한다.

 

2. 분류 후 텍스트뷰에 적용

이건 최근에 내가 코드를 리팩토링 중 사용했던 방법이다.

 

fun Data.getClassification(): Classification {
    val temperatureClassification = classifyTemperature()
    val humidityClassification = classifyHumidity()
    val illuminanceClassification = classifyIlluminance()
    return Classification(temperatureClassification, humidityClassification, illuminanceClassification)
}

private fun Data.classifyTemperature(): String {
	// 여기서는 return을 좋음, 보통, 나쁨을 리턴하면 됨
}

private fun Data.classifyHumidity(): String {
	// 여기서는 return을 좋음, 보통, 나쁨을 리턴하면 됨
}

private fun Data.classifyIlluminance(): String {
	// 여기서는 return을 좋음, 보통, 나쁨을 리턴하면 됨
}

원래 존재했던 데이터 클래스에서 분류하기 위해서 Classification이라는 데이터 클래스를 만든다.

 

그리고, Data에 들어있는 온도,습도,조도값을 분류하기 위해서 Data.classifyOOO와 같은 함수를 또 만든 뒤 return 값을 "좋음" "보통" "나쁨" 중 하나로 리턴한다. (내가 개발할 땐 기준에 따라 리턴을 했었다.)

 

fun setTextViewProperties(textView: TextView, classification: String) {
    when (classification) {
        "좋음"-> {
            // 좋음 경우 textView의 설정
        }
        "보통" -> {
            // 보통경우 textView의 설정
        }
        "나쁨"-> {
            // 나쁨 경우 textView의 설정
        }
        else -> {
            // 그 외 경우 textView의 설정
        }
    }
}

fun setupUi() {
	val data: Data = ...

	val classification = data.getClassification()

	setTextViewProperties(textView1, classification.temperatureClassification)
	setTextViewProperties(textView2, classification.humidityClassification)
	setTextViewProperties(textView3, classification.illuminanceClassification)
}

그 후 위 와 같이 분류를 통해서 텍스트를 적용했었다.

 

데이터 클래스의 활용을 이런 식으로 많이 사용했었던 거 같다.

 

이런 식으로 사용하면 메인에 UI를 설정할 때 복잡한 코드를 많이 줄일 수 있어서 좋은 것 같다.

저작자표시 비영리 동일조건 (새창열림)

'안드로이드 > 잡다한 지식' 카테고리의 다른 글

[안드로이드] WifiManager에서 Deprecated된 기능들  (0) 2023.05.22
[안드로이드] AsyncTask가 Deprecated된 이유  (0) 2023.05.19
[안드로이드] Compose Pager에서 swipe시 렉  (0) 2023.05.06
MPAndroidChart 너는 뭐니  (1) 2023.04.11
[안드로이드] 클린 아키텍처? MVVM? MVP?  (0) 2023.03.11
    '안드로이드/잡다한 지식' 카테고리의 다른 글
    • [안드로이드] WifiManager에서 Deprecated된 기능들
    • [안드로이드] AsyncTask가 Deprecated된 이유
    • [안드로이드] Compose Pager에서 swipe시 렉
    • MPAndroidChart 너는 뭐니
    비비디바비비부
    비비디바비비부
    안드로이드 기술 블로그, 코딩 공부, 프로그래머

    티스토리툴바