Я хочу показать записи базы данных помещений в RecyclerView. Пока у меня есть скелет комнаты, и я могу показать некоторый фиктивный контент (не из комнаты) в RecyclerView:
Однако у меня возникают проблемы с отображением записей БД комнаты вместо фиктивного содержимого. В Arduino ввод-вывод EEPROM раньше был почти однострочным, но в Android Room эта концептуально простая задача кажется сложной и не очень сложной задачей. Это подводит меня к моему первому вопросу:
1) Поскольку в моем случае база данных довольно тонкая и простая, есть ли более простой подход, чем Room, с меньшими затратами и классами?
Что касается подхода Room, я считаю, что я довольно близок. У меня есть трудности с реализацией следующего:
2) Как заменить цикл for в DummyContent init на записи Room-DB (allJumps из ViewModel)?
Вот что я получил до сих пор (я не публиковал ничего ниже ViewModel, такого как репозиторий и DAO, поскольку сейчас это не должно представлять интереса):
DummyItems (фиктивное содержимое должно быть заменено записями в базе данных Room)
object DummyContent {
// An array of sample (dummy) items.
val ITEMS: MutableList<DummyItem> = ArrayList()
// A map of sample (dummy) items, by ID.
val ITEM_MAP: MutableMap<String, DummyItem> = HashMap()
private val COUNT = 25
init {
// Add some sample items.
// TO BE REPLACED BY ROOM DB ENTRIES <----------------------------------------------------
for (i in 1..COUNT) {
addItem(createDummyItem(i))
}
}
private fun addItem(item: DummyItem) {
ITEMS.add(item)
ITEM_MAP.put(item.id, item)
}
private fun createDummyItem(position: Int): DummyItem {
return DummyItem(position.toString(), "Item " + position, makeDetails(position))
}
private fun makeDetails(position: Int): String {
val builder = StringBuilder()
builder.append("Details about Item: ").append(position)
for (i in 0..position - 1) {
builder.append("\nMore details information here.")
}
return builder.toString()
}
// A dummy item representing a piece of content.
data class DummyItem(val id: String, val content: String, val details: String) {
override fun toString(): String = content
}
}
все прыжки/данные прыжков
// allJumps is of type LiveData<List<JumpData>>
@Entity
data class JumpData (
@PrimaryKey var jumpNumber: Int,
var location: String?
}
Модель представления
class JumpViewModel(application: Application) : AndroidViewModel(application) {
// The ViewModel maintains a reference to the repository to get data.
private val repository: JumpRepository
// LiveData gives us updated words when they change.
val allJumps: LiveData<List<JumpData>>
init {
// Gets reference to WordDao from WordRoomDatabase to construct
// the correct WordRepository.
val jumpsDao = JumpRoomDatabase.getDatabase(application, viewModelScope).jumpDao()
repository = JumpRepository(jumpsDao)
allJumps = repository.allJumps // OF INTEREST <----------------------------------------------------
}
fun insert(jump: JumpData) = viewModelScope.launch {
repository.insert(jump)
}
fun getJumps() : LiveData<List<JumpData>> {
return allJumps
}
}