
[英]Sub version for database (I want something for data values in the database, not for the schema)
[英]Room database - adding "whole pojo schema" into the database, instead of the data I want
我尝试按照一些房间教程进行操作,并想在微调器中显示数据库中的数据,但我有一些奇怪的 output。 我怎样才能添加我想要的数据,而不是这个奇怪的模式?
我可以在微调器中看到什么
CurrencyDatabaseModel(currency=USD)
CurrencyDatabaseModel(currency=EUR)
等等。
我想得到什么
EUR
USD
...
货币数据库模型
@Entity(tableName = "currencies")
data class CurrencyDatabaseModel(
@PrimaryKey @ColumnInfo(name = "currency_name") val currency: String
)
道
@Dao
interface CurrencyDAO {
@Insert(onConflict = OnConflictStrategy.IGNORE)
suspend fun insertNewCurrency(databaseModel: CurrencyDatabaseModel)
@Query("SELECT * FROM currencies ORDER BY currency_name")
fun getAllCurrencies(): Flow<List<CurrencyDatabaseModel>>
}
存储库
class CurrencyDatabaseRepository(private val currencyDAO: CurrencyDAO) {
val allCurrencyNamesModel: Flow<List<CurrencyDatabaseModel>> = currencyDAO.getAllCurrencies()
@Suppress("RedundantSuspendModifier")
@WorkerThread
suspend fun insertNewCurrency(currencyDatabaseModel: CurrencyDatabaseModel){
currencyDAO.insertNewCurrency(currencyDatabaseModel)
}
}
视图模型
class CurrencyDatabaseViewModel(private val currencyDatabaseRepository: CurrencyDatabaseRepository) :
ViewModel() {
val currencyNames = mutableListOf<CurrencyDatabaseModel>()
val allCurrencies: LiveData<List<CurrencyDatabaseModel>> = currencyDatabaseRepository.allCurrencyNamesModel.asLiveData()
}
class CurrencyDatabaseFactory(private val currencyDatabaseRepository: CurrencyDatabaseRepository) :
ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
if(modelClass.isAssignableFrom(CurrencyDatabaseViewModel::class.java)){
@Suppress("UNCHECKED_CAST")
return CurrencyDatabaseViewModel(currencyDatabaseRepository) as T
}
throw IllegalArgumentException("Unknown ViewModel class DB")
}
}
所以这基本上是正在发生的事情以及你的代码是如何工作的:
toString()
function 数据 class CurrencyDatabaseModel()
@Entity(tableName = "currencies")
data class CurrencyDatabaseModel(
@PrimaryKey
@ColumnInfo(name = "currency_name")
val currency: String
) {
override fun toString(): String {
return super.toString()
}
}
这就是你的问题的原因。
尝试更改数据 class 如下:
@Entity(tableName = "currencies")
data class CurrencyDatabaseModel(
@PrimaryKey
@ColumnInfo(name = "currency_name")
val currency: String
) {
override fun toString(): String {
return this.currency
}
}
我相信这应该可以解决问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.