android:queriedlist
queriedlist
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
android:queriedlist [2025/04/20 11:32] – 만듦 이거니맨 | android:queriedlist [2025/04/21 01:06] (현재) – 이거니맨 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
- | ===== 기초 지식 ===== | + | ===== 참고할 |
- | [[https:// | + | 데이터를 쿼리하여 정렬하는 것은 관련 UI도 매우 중요하다. UI를 참조할 수 있는 샘플은 구글에서 제공하는 |
+ | [[https:// | ||
- | ===== DAO 예제 | + | ===== List 내장 함수를 이용하여 데이터를 다루는 방법 |
- | ==== 1. Kotlin으로 데이터를 다루는 방법 ==== | + | 위 [[https://github.com/android/snippets/ |
- | + | ||
- | 위 [[https://developer.android.com/develop/ui/ | + | |
<code kotlin> | <code kotlin> | ||
줄 42: | 줄 41: | ||
- | ==== 2. Room 데이터베이스에서 데이터 정렬하기 ==== | + | ===== Room 데이터베이스에서 데이터 정렬하기 |
이제 데이터베이스를 이용할 경우를 살펴보도롣ㄱ 하자 | 이제 데이터베이스를 이용할 경우를 살펴보도롣ㄱ 하자 | ||
- | === 가. DAO 만들기 ==== | + | ==== 1. SQL 쿼리 |
그렇다면 실제 RoomDatabase를 이요할 경우 데이터를 정렬하는 샘플을 만들어 보자 | 그렇다면 실제 RoomDatabase를 이요할 경우 데이터를 정렬하는 샘플을 만들어 보자 | ||
줄 73: | 줄 72: | ||
fun getAllScores() : LiveData< | fun getAllScores() : LiveData< | ||
- | @Query(" | + | @Query(" |
- | fun getAllScoresByTitleASC() : LiveData< | + | "CASE WHEN : |
+ | "CASE WHEN : | ||
+ | "CASE WHEN : | ||
+ | "CASE WHEN : | ||
+ | fun getScoreList(sortMethod : String) : LiveData< | ||
+ | } | ||
+ | </ | ||
- | @Query(" | + | 인자로 받은 sortMethod에 따라서 |
- | fun getAllScoresByTitleDESC() : LiveData< | + | |
- | @Query(" | ||
- | fun getAllScoresByDateASC() : LiveData< | ||
- | @Query(" | + | ==== 2. ViewModel ==== |
- | | + | |
+ | === 가. Sort 클래스 === | ||
+ | |||
+ | 다음과 같이 sealed class를 만들었다. | ||
+ | |||
+ | <code kotlin> | ||
+ | sealed class Sort() { | ||
+ | | ||
+ | object TitleDESC | ||
+ | object DateASC : Sort() | ||
+ | object DateDESC : Sort() | ||
} | } | ||
- | </file> | + | </code> |
+ | |||
+ | === 나. ViewModel 함수 === | ||
+ | |||
+ | 각 경우에 따라 Dao를 불러오는 함수를 다음과 같이 만들었다. | ||
+ | |||
+ | <code kotlin> | ||
+ | fun scoreList() : LiveData< | ||
+ | return scoreDao.getAllScores() | ||
+ | } | ||
+ | |||
+ | fun scoreList(sortMethod : Sort) : LiveData< | ||
+ | return when (sortMethod) { | ||
+ | Sort.DateASC -> scoreDao.getScoreList(" | ||
+ | Sort.DateDESC -> scoreDao.getScoreList(" | ||
+ | Sort.TitleASC -> scoreDao.getScoreList(" | ||
+ | Sort.TitleDESC -> scoreDao.getScoreList(" | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ==== 3. 불러오기 ==== | ||
+ | |||
+ | View화면에서는 다음과 같이 불러오면 된다. | ||
+ | |||
+ | <code kotlin> | ||
+ | val sortMethod = remember { mutableStateOf< | ||
+ | |||
+ | val scoreList by viewModel.scoreList(sortMethod.value).observeAsState() // 점수 목록 | ||
+ | |||
+ | |||
+ | OrderButtons(sortByTitleASC = { sortMethod.value = Sort.TitleASC }, | ||
+ | sortByTitleDESC = { sortMethod.value = Sort.TitleDESC}, | ||
+ | sortByDateASC = { sortMethod.value = Sort.DateASC } ) | ||
+ | </code> |
android/queriedlist.1745116376.txt.gz · 마지막으로 수정됨: 2025/04/20 11:32 저자 이거니맨