사용자 도구

사이트 도구


android:queriedlist
queriedlist

문서의 이전 판입니다!


기초 지식

목록 및 그리드에 대한 스니펫 모음을 일단 참고하자.

DAO 예제

1. Kotlin으로 데이터를 다루는 방법

스니펫 모음 예제를 보면 kotlin으로 데이터를 어떻게 다루는지 이해하기가 쉽다. 데이터베이스가 없는 경우에 데이터를 다루는 예제이므로 일어보면 도움이 된다.

class AnimatedOrderedListViewModel : ViewModel() {
    private val _data = listOf("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten")
    private val _displayedItems: MutableStateFlow<List<String>> = MutableStateFlow(_data)
    val displayedItems: StateFlow<List<String>> = _displayedItems
 
    fun resetOrder() {
        _displayedItems.value = _data.filter { it in _displayedItems.value }
    }
 
    fun sortAlphabetically() {
        _displayedItems.value = _displayedItems.value.sortedBy { it }
    }
 
    fun sortByLength() {
        _displayedItems.value = _displayedItems.value.sortedBy { it.length }
    }
 
    fun addItem() {
        // Avoid duplicate items
        val remainingItems = _data.filter { it !in _displayedItems.value }
        if (remainingItems.isNotEmpty()) _displayedItems.value += remainingItems.first()
    }
 
    fun removeItem() {
        _displayedItems.value = _displayedItems.value.dropLast(1)
    }
}

2. Room 데이터베이스에서 데이터 정렬하기

이제 데이터베이스를 이용할 경우를 살펴보도롣ㄱ 하자

가. DAO 만들기

그렇다면 실제 RoomDatabase를 이요할 경우 데이터를 정렬하는 샘플을 만들어 보자

일단 DAO는 이렇게 만들 수 있을 것이다.

"ScoreDao.kt"
package com.dklaw.memorize.database
 
import androidx.lifecycle.LiveData
import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Query
import androidx.room.Upsert
 
@Dao
interface ScoreDAO {
 
    @Upsert
    suspend fun upsertScore(score : Score)
 
    @Delete
    suspend fun deleteScore(score : Score)
 
    @Query("SELECT * FROM SCORE")
    fun getAllScores() : LiveData<List<Score>>
 
    @Query("SELECT * FROM SCORE ORDER BY quoteTitle ASC")
    fun getAllScoresByTitleASC() : LiveData<List<Score>>
 
    @Query("SELECT * FROM SCORE ORDER BY quoteTitle DESC")
    fun getAllScoresByTitleDESC() : LiveData<List<Score>>
 
    @Query("SELECT * FROM SCORE ORDER BY createdAt ASC")
    fun getAllScoresByDateASC() : LiveData<List<Score>>
 
    @Query("SELECT * FROM SCORE ORDER BY createdAt DESC")
    fun getAllScoresByDateDESC() : LiveData<List<Score>>
}
로그인하면 댓글을 남길 수 있습니다.

android/queriedlist.1745116376.txt.gz · 마지막으로 수정됨: 2025/04/20 11:32 저자 이거니맨