Какой минимальный способ внедрить базу данных комнаты в JetPack Compose?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Какой минимальный способ внедрить базу данных комнаты в JetPack Compose?

Сообщение Anonymous »

Я пытался правильно понять, как правильно использовать базы данных в Android, поэтому я начал создавать простое приложение для туристических направлений, но теперь я застрял, выясняя, как реализовать комнату.
Документация по разработчику Android не была тщательной для того, как я хочу достичь пользовательского интерфейса для управления базой данных, и официальные коделабы, кажется, чрезмерны, что я хочу достичь. Я также не понимаю, что такое ViewModels и почему вы должны их использовать.

Код: Выделить всё

@Entity(tableName = "destinations")
data class Destination(
@PrimaryKey val name: String
)
< /code>
destinationdao.kt:
@Dao
interface DestinationDao {
@Query("SELECT * FROM destinations")
fun getAll(): List

@Upsert
fun upsert(destination: Destination)

@Delete
fun delete(destination: Destination)
}
< /code>
Aappdatabase.kt:
@Database(entities = [Destination::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
abstract fun destinationDao(): DestinationDao
}
< /code>
Упрощенная версия mainActivity.kt: < /p>
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun TravelApp() {
Scaffold(
modifier = Modifier.fillMaxSize(),
topBar = {
TopAppBar(title = { Text("Travel destinations") })
}
) { innerPadding ->
Column(
modifier = Modifier
.padding(innerPadding)
.fillMaxSize()
) {
Row {
var destinationToAdd by remember { mutableStateOf("") }
TextField(
modifier = Modifier.weight(1f),
value = destinationToAdd,
onValueChange = { destinationToAdd = it },
label = { Text("Destination") }
)
Button(
onClick = {
// add 'destinationToAdd' to database
}
) {
Text("Add")
}
}
LazyColumn(
modifier = Modifier
.fillMaxWidth()
.weight(1f)
) {
// show destinations here
}
}
}
}
Как бы я сделал инициализацию базы данных и подключил ее к пользовательскому интерфейсу?

Подробнее здесь: https://stackoverflow.com/questions/796 ... ck-compose
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»