I have some spinner with currency names in it. I'd like to update base currency in room db, whenever user select any of the currencies in spinner. I've wrote some functions, but it doesn't work. I've checked it in Database Inspector, and some program to read databases. The base currency remains same - the one, which I implement by default whenever database is created.
dao
@Update
fun updateBaseCurrency(baseCurrencyModel: BaseCurrencyModel)
repository
@Suppress("RedundantSuspendModifier")
@WorkerThread
suspend fun updateBaseCurrency(baseCurrencyModel: BaseCurrencyModel){
currencyDAO.updateBaseCurrency(baseCurrencyModel)
}
view model
fun updateCurrency(baseCurrencyModel: BaseCurrencyModel) {
viewModelScope.launch(Dispatchers.IO) {
currencyDatabaseRepository.updateBaseCurrency(baseCurrencyModel)
}
}
model class
@Entity(tableName = "base_currency")
data class BaseCurrencyModel(
@PrimaryKey
@ColumnInfo(name = "base_curr")
val baseCurrency: String
) {
override fun toString(): String {
return this.baseCurrency
}
}
on click listener from spinner
private fun prepareSpinner(list: List<CurrencyNamesModel>) {
val spinnerAdapter = ArrayAdapter(
requireActivity(), android.R.layout.simple_spinner_item, list
)
mSelectNewBaseCurrency?.adapter = spinnerAdapter
mSelectNewBaseCurrency?.setSelection(0, false)
mSelectNewBaseCurrency?.onItemSelectedListener =
object : AdapterView.OnItemSelectedListener, AdapterView.OnItemClickListener {
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
Log.i(TAG, "onItemSelected: "+mAllCurrencyNames[p2])
updateBaseCurrency(mAllCurrencyNames[p2].toString())
}
override fun onNothingSelected(p0: AdapterView<*>?) {
Log.i(TAG, "onNothingSelected: ")
}
...
updateBaseCurrency
private fun updateBaseCurrency(selectedCurrency: String) {
val newBase = BaseCurrencyModel(selectedCurrency)
Log.i(TAG, "updateBaseCurrency: $selectedCurrency || $newBase")
CoroutineScope(Dispatchers.IO).launch {
mDatabaseViewModel.updateCurrency(newBase)
}
}
logs
I/ChangeBaseCurrency: onItemSelected: AZN
I/ChangeBaseCurrency: updateBaseCurrency: AZN || AZN