Implemented rudimentary batteries listing.

This commit is contained in:
sockenklaus
2022-07-20 16:36:01 +02:00
parent 2e72b63f05
commit 8f691b30d8
5 changed files with 65 additions and 17 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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)
}
}
}
}
}
}

View File

@@ -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()
}

View File

@@ -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>