I am retrieving data from the room database using this code. it takes around 2 seconds to fetch and display data on the screen. The table has 10k rows.
Table
@Entity("RoomTrains")
data class TrnTable(
@PrimaryKey
val num:Int=0,
val name:String="",
val type:Int=0,
val srCode:String="",
val srcName:String="",
val destCode:String="",
val destName:String="",
val runDays:Int=0,
val classes:String="",
val totalDist:Float=0.0f,
val jourTime:Int=0,
val depArr:String="",
val updatedOn:Int=0)
Dao
@Query("SELECT * FROM RoomTrains")
abstract fun getTrains(): Flow<List<TrnTable>>
Repository
fun getAllTrains(): Flow<List<TrnTable>> {
return trainDao.getTrains()
}
View model
val allTrainsFromTrnTableSF: StateFlow<List<TrnTable>> = chukRepository.getAllTrains()
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(),
initialValue = emptyList(),
)
UI Page
val trainList by viewModel.allTrainsFromTrnTableSF.collectAsState(initial = emptyList())
LazyColumn(modifier = Modifier.background(Color.LightGray)) {
items(trainList) { train ->
//data displayed using Card()
}
}