Implemented rudimentary batteries listing.
This commit is contained in:
@@ -40,7 +40,7 @@ class AddBatteryFragment : Fragment() {
|
||||
|
||||
val model = ViewModelProvider(this)[AddBatteryViewModel::class.java]
|
||||
|
||||
var batteries = emptyList<Battery>()
|
||||
var batteries by mutableStateOf(emptyList<Battery>())
|
||||
|
||||
model.batteries.observe(viewLifecycleOwner) {
|
||||
batteries = it
|
||||
|
||||
@@ -49,7 +49,7 @@ class AddChargeFragment : Fragment() {
|
||||
): View {
|
||||
|
||||
model = ViewModelProvider(this)[AddChargeViewModel::class.java]
|
||||
var batteries = emptyList<Battery>()
|
||||
var batteries by mutableStateOf(emptyList<Battery>())
|
||||
|
||||
model.batteries.observe(this.viewLifecycleOwner){
|
||||
batteries = it
|
||||
|
||||
@@ -4,29 +4,80 @@ import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.lazy.LazyColumn
|
||||
import androidx.compose.foundation.lazy.LazyListState
|
||||
import androidx.compose.foundation.lazy.items
|
||||
import androidx.compose.material.*
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||
import androidx.compose.ui.unit.dp
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import com.sockenklaus.batterytracker.R
|
||||
import com.sockenklaus.batterytracker.room.entities.Battery
|
||||
import com.sockenklaus.batterytracker.ui.composables.MyOutlinedTextFieldWithSuffix
|
||||
import com.sockenklaus.batterytracker.ui.theme.BatteryTrackerTheme
|
||||
|
||||
class HomeFragment : Fragment() {
|
||||
|
||||
@OptIn(ExperimentalMaterialApi::class)
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
|
||||
val model = ViewModelProvider(this)[HomeViewModel::class.java]
|
||||
|
||||
return ComposeView(requireContext()).apply {
|
||||
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
||||
|
||||
setContent {
|
||||
|
||||
setContent {
|
||||
BatteryTrackerTheme() {
|
||||
|
||||
val model: HomeViewModel = viewModel()
|
||||
var batteries by remember { mutableStateOf(emptyList<Battery>()) }
|
||||
var filterText by remember { mutableStateOf("")}
|
||||
|
||||
model.batteries.observe(viewLifecycleOwner) {
|
||||
batteries = it
|
||||
}
|
||||
|
||||
val filteredList = batteries.filter { it.name.contains(filterText, ignoreCase = true) }
|
||||
val modHorizontalPadding = Modifier.padding(horizontal = 16.dp)
|
||||
|
||||
Column {
|
||||
MyOutlinedTextFieldWithSuffix(
|
||||
value = filterText,
|
||||
onValueChange = { filterText = it },
|
||||
labelId = R.string.hint_filter_batteries,
|
||||
modifier = Modifier.padding(
|
||||
start = 16.dp,
|
||||
end = 16.dp,
|
||||
top = 16.dp
|
||||
)
|
||||
)
|
||||
|
||||
LazyColumn(
|
||||
state = LazyListState()
|
||||
) {
|
||||
items(filteredList){ battery ->
|
||||
ListItem(
|
||||
text = { Text(battery.name) },
|
||||
secondaryText = {
|
||||
if(battery.declaredCapacity != null){
|
||||
Text("Capacity: ${battery.declaredCapacity} Ah")
|
||||
}
|
||||
}
|
||||
)
|
||||
Divider(modHorizontalPadding)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,15 +1,11 @@
|
||||
package com.sockenklaus.batterytracker.ui.fragments.home
|
||||
|
||||
import android.app.Application
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.*
|
||||
import com.sockenklaus.batterytracker.room.BatteryTrackerDB
|
||||
|
||||
class HomeViewModel(application: Application) : AndroidViewModel(application) {
|
||||
|
||||
private val _text = MutableLiveData<String>().apply {
|
||||
value = "This is home Fragment"
|
||||
}
|
||||
val text: LiveData<String> = _text
|
||||
private val db = BatteryTrackerDB.getInstance(application)
|
||||
val batteries = db.batteryDao().getBatteries().asLiveData()
|
||||
}
|
||||
@@ -30,4 +30,5 @@
|
||||
<string name="helper_required">* Required</string>
|
||||
<string name="helper_battery_not_unique">Battery-Name not unique!</string>
|
||||
<string name="helper_battery_not_found">Battery not found</string>
|
||||
<string name="hint_filter_batteries">Filter Batteries…</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user