Kotlin : Realm을 사용하여 csv 파일 설정
12651 단어 안드로이드초보자AndroidStudioKotlin
소개
Realm의 데이타베이스를 이용한 데모 앱을 작성하고 있을 때, 데이타베이스가 비어 있는 상태로 등록이나 삭제를 실시하고 있었습니다만, 미리 csv 파일을 세트 해 두는 방법도 시도했으므로, 잊지 않게 남기자 라고 생각합니다.
build.gradle 설정
프로젝트 레벨 build.gradle을 열고 다음 문장을 classpath에 추가하십시오.
classpath "io.realm:realm-gradle-plugin:10.2.0"
그런 다음 application 레벨 build.gradle을 열고 다음 플러그인을 적용합니다.
id 'realm-android'
여기서 언어가 kotlin이면 다음 플러그인을 적용해야합니다. 이 플러그인은 위의 'realm-android'보다 위에 배치하십시오.
id 'kotlin-kapt'
자세한 방법은 여기
Realm 초기화
그런 다음 Realm을 초기화합니다.
초기화하고 싶은 것을 쓰는 클래스에 Application 클래스가 있어, 이 Application 클래스를 상속한 새로운 클래스를 작성해, 그 안에서 초기화를 실시합니다.
NewActivity.kt
package com.example.databasecsv
import android.app.Application
import io.realm.Realm
class NewActivity : Application() {
override fun onCreate() {
super.onCreate()
//Realmの初期化
Realm.init(this)
}
}
모델 클래스 만들기
데이터베이스 프레임워크를 클래스로 설정합니다.
이전과 마찬가지로 새 클래스를 만들고 RealmObject 클래스를 상속하고 클래스를 열 수 있습니다.
작성한 클래스 내에서 데이터베이스의 필드(열)를 설정합니다.
ExDB.kt
package com.example.databasecsv
import io.realm.RealmObject
open class ExDB : RealmObject() {
//フィールドの設定
var exQuestion : String? = null
var exAnswer : String? = null
}
준비
이때 파일의 이름은 모델 클래스(ExDB)와 같고, 필드도 모델 클래스에서 선언한 것(exQuestion이나 exAnswer)과 같게 합니다.
위의 링크에서 다운로드 한 후 다음과 같이 설정 한 CSV 파일에서 realm 파일을 만듭니다.
저장된 CSV 파일을 메모장에서 열고 문자 코드를 UTF-8로 만든 다음 realm 파일을 만들면 작동 할 수 있습니다.
realm 파일을 Android Studio로 가져오기
Assets 폴더를 만들고 여기에 이전 realm 파일(test.realm)을 배치합니다.
배치한 후 Realm 초기화 아래에 다음 설정을 추가합니다.
NewActivity.kt
val config = RealmConfiguration.Builder().assetFile("test.realm").build()
Realm.setDefaultConfiguration(config)
목록 표시
MainActivity.kt
package com.example.databasecsv
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.ArrayAdapter
import io.realm.Realm
import io.realm.RealmResults
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
lateinit var realm : Realm
lateinit var results : RealmResults<ExDB>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
override fun onResume() {
super.onResume()
realm = Realm.getDefaultInstance()
results = realm.where(ExDB::class.java).findAll().sort(getString(R.string.db_field_question))
val wordlist = ArrayList<String>()
results.forEach{
wordlist.add(it.exAnswer + " : " + it.exQuestion)
}
val adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, wordlist)
listView.adapter = adapter
}
override fun onPause() {
super.onPause()
realm.close()
}
strings.xml
<string name="db_field_question">exQuestion</string>
오류
위와 같은 오류가 발생하면 다음 문장을 추가하여 사라졌습니다.
strings.xml
<application
//省略
android:name=".NewActivity">
//省略
</application>
Execution failed for task ':app:kaptDebugKotlin'.
A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptExecution
java.lang.reflect.InvocationTargetException (no error message)
이 오류는 좀처럼 사라지지 않았지만 kotlin 버전을 1.4.20> 1.3.50으로 낮추면 사라졌습니다.
(잘못된 방법이라면 죄송합니다. 여기 을 참고했습니다)
Reference
이 문제에 관하여(Kotlin : Realm을 사용하여 csv 파일 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/chiii3/items/584c5cda151f3516ce9d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)