में मुक़ाबला क्यों स्थानीय मिलान (कमरा संस्करण 1.0.0 में) लागू नहीं है जब यह प्रलेखन (https://developer.android.com/reference/android/arch/persistence/room/ColumnInfo.html#LOCALIZED) में है मैं नहीं जानता है। मुझे यह समस्या रिपोर्ट https://issuetracker.google.com/issues/68925249 मिली है जिसे निश्चित के रूप में चिह्नित किया गया है - लेकिन शायद इसे जारी नहीं किया गया है।
तो कॉमन्सवेयर ने प्रश्न में टिप्पणी के रूप में बदसूरत कामकाज किया है - इसे CREATE स्टेटमेंट में परिभाषित करें। इसे डेटाबेस निर्माता में कॉलबैक द्वारा कार्यान्वित किया जा सकता है। लेकिन समस्या है - हमें बिल्ड टेबल का उपयोग करना होगा क्योंकि स्क्लाइट कोलेट को बदलने में सहायता नहीं करता है। और क्योंकि कॉलबैक अभी तक कॉलबैक में मौजूद है, इसलिए हमें इस तालिका को हटाना होगा।
@Database(entities = [(LocalityItem::class)], version = AppDatabase.DB_VERSION, exportSchema = false)
abstract class AppDatabase : RoomDatabase() {
abstract fun localityDao(): LocalityDao
companion object {
const val DB_NAME : String = "app_db"
const val DB_VERSION : Int = 1
private var INSTANCE: AppDatabase? = null
private val CALLBACK: Callback = object : Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
db.execSQL("DROP TABLE `locality` ")
db.execSQL("CREATE TABLE `locality` ("
+ " `id` INTEGER,"
+ " `type` INTEGER,"
+ " `name` TEXT COLLATE LOCALIZED, "
+ " `row_index` INTEGER,"
+ " `col_index` INTEGER,"
+ " PRIMARY KEY(`id`)"
+ ")")
db.execSQL("CREATE INDEX `index_locality_type` ON `locality` (`type`)")
db.execSQL("CREATE INDEX `index_locality_name` ON `locality` (`name`)")
}
}
fun getInstance(context : Context) : AppDatabase? {
if (INSTANCE == null) {
synchronized(AppDatabase::class) {
INSTANCE = Room.databaseBuilder(
context.applicationContext,
AppDatabase::class.java, DB_NAME)
.addCallback(CALLBACK)
.build()
}
}
return INSTANCE
}
}
}
स्रोत
2018-02-23 09:12:15
अगर मैं सही ढंग से समझ, 'उपयोग करने के लिए मुक़ाबला LOCALIZED', आप घोषित करने के लिए है कि के हिस्से के रूप की जरूरत है: बयान बनाने के सूचकांक भी इकाई वर्ग परिभाषा कॉपी चाहिए -
मेरी कार्यान्वयन (Kotlin में) नहीं है 'तालिका बनाएं' कथन में एक कॉलम बाधा। ऐसा प्रतीत होता है कि आप अपने 'CREATE तालिका' कथन को कोड करने के लिए 'माइग्रेशन' का उपयोग कर सकते हैं, हालांकि यह प्रारंभिक तालिका निर्माण (बनाम अपग्रेड) के लिए' माइग्रेशन 'बनाने का तरीका नहीं है। मुझे नहीं पता कि क्या आप [इस मुद्दे] दायर किए गए थे (https://issuetracker.google.com/issues/62007004), लेकिन मैं इस पर नजर रखूंगा। – CommonsWare
हाय, क्या आपने इसे ठीक किया? –
वास्तव में नहीं ... इस समय मैं उपयोग करने से पहले सूची को सॉर्ट करता हूं। 'संग्रह .sort (nameOfYourList) {o1, o2 -> Collator.getInstance (Locale.GERMAN) .compare (o1.lastName, o2.lastName)}' – denwehrle