Я хочу показать Номер базы данных записей в RecyclerView . Пока у меня есть скелет Комнаты, и я могу показать некоторый фиктивный контент (не из комнаты) в RecyclerView:
![enter image description here](https://i.stack.imgur.com/qmW7J.png)
Однако у меня есть проблемы с показом Комнаты Записи БД вместо фиктивного контента. В Arduino система ввода-вывода EEPROM когда-то была почти единственной, но в Android Room эта концептуально простая задача кажется сложной и не слишком сложной задачей. Это подводит меня к моему первому вопросу:
1) Поскольку в моем случае база данных довольно тонкая и простая, есть ли более простой подход, чем Room, использующий меньше накладных расходов и классов?
Что касается подхода в комнате, я считаю, что я довольно близок. У меня возникают трудности при реализации следующего:
2) Как я могу заменить for-l oop в init DummyContent записями Room-DB (allJumps из ViewModel)?
Вот что я получил до сих пор (я не публиковал ничего под ViewModel, например, Repository и DAO, так как это сейчас не должно интересовать):
DummyItems (dummy содержимое, подлежащее замене записями БД комнаты)
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 / JumpData
// allJumps is of type LiveData<List<JumpData>>
@Entity
data class JumpData (
@PrimaryKey var jumpNumber: Int,
var location: String?
}
ViewModel
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
}
}