リビジョン 1b0c4fa7
| learn/android/TempRecorderJetpackKt/app/src/main/java/com/torutk/android/temprecorder/jetpackkt/MainActivity.kt | ||
|---|---|---|
|
import androidx.databinding.DataBindingUtil
|
||
|
import androidx.lifecycle.Observer
|
||
|
import com.torutk.android.temprecorder.jetpackkt.databinding.ActivityMainBinding
|
||
|
import java.time.LocalDateTime
|
||
|
import java.time.format.DateTimeFormatter
|
||
|
|
||
|
// 検温日時の表示形式を定義
|
||
|
internal val DATE_TIME_VIEW_FORMATTER = DateTimeFormatter.ofPattern("MM.dd HH:mm")
|
||
|
|
||
|
class MainActivity : AppCompatActivity() {
|
||
|
|
||
|
private val temperatureViewModel: MainViewModel by viewModels { MainViewModel.Factory(this.application) }
|
||
|
|
||
|
private val binding: ActivityMainBinding by lazy {
|
||
|
DataBindingUtil.setContentView(this, R.layout.activity_main)
|
||
|
}
|
||
|
|
||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||
|
super.onCreate(savedInstanceState)
|
||
|
val binding: ActivityMainBinding = DataBindingUtil.setContentView(this, R.layout.activity_main)
|
||
|
binding.lifecycleOwner = this
|
||
|
binding.viewModel = temperatureViewModel
|
||
|
setContentView(binding.root)
|
||
|
|
||
|
// 検温日時の増減操作
|
||
|
binding.buttonMainIncminite.setOnClickListener { temperatureViewModel.incrementMeasuredAt(10) }
|
||
|
binding.buttonMainDecminite.setOnClickListener { temperatureViewModel.decrementMeasuredAt(10) }
|
||
|
|
||
|
// 体温入力用のNumberPicker設定
|
||
|
with (binding.numberpickerMainIntegral) {
|
||
|
with(binding.numberpickerMainIntegral) {
|
||
|
minValue = 35
|
||
|
maxValue = 40
|
||
|
value = 36
|
||
|
wrapSelectorWheel = false
|
||
|
}
|
||
|
with (binding.numberpickerMainFraction) {
|
||
|
with(binding.numberpickerMainFraction) {
|
||
|
minValue = 0
|
||
|
maxValue = 9
|
||
|
value = 5
|
||
|
}
|
||
|
|
||
|
// 体温の登録
|
||
|
binding.buttonMainSubmit.setOnClickListener {
|
||
|
val temperature = binding.numberpickerMainIntegral.value + binding.numberpickerMainFraction.value / 10f
|
||
|
temperatureViewModel.submitTemperature(temperature)
|
||
|
}
|
||
|
|
||
|
val adapter = TemperatureAdapter()
|
||
|
binding.recyclerviewMainRecord.adapter = adapter
|
||
|
|
||
| ... | ... | |
|
super.onResume()
|
||
|
temperatureViewModel.currentMeasuredAt()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
| learn/android/TempRecorderJetpackKt/app/src/main/java/com/torutk/android/temprecorder/jetpackkt/MainViewModel.kt | ||
|---|---|---|
|
}
|
||
|
}
|
||
|
|
||
|
fun submitTemperature(measurement: Float) {
|
||
|
fun submitTemperature(integral: Int, fraction: Int) {
|
||
|
val temp = Temperature(
|
||
|
measuredAt = measuredAt.value ?: LocalDateTime.now(),
|
||
|
measurement = measurement
|
||
|
measurement = integral + fraction / 10F
|
||
|
)
|
||
|
viewModelScope.launch {
|
||
|
temperatureRepository.insert(temp)
|
||
| learn/android/TempRecorderJetpackKt/app/src/main/res/layout/activity_main.xml | ||
|---|---|---|
|
android:layout_height="wrap_content"
|
||
|
android:layout_marginTop="16dp"
|
||
|
android:text="@string/main_incminite"
|
||
|
android:onClick="@{() -> viewModel.incrementMeasuredAt(10)}"
|
||
|
app:layout_constraintEnd_toStartOf="@+id/button_main_decminite"
|
||
|
app:layout_constraintHorizontal_bias="0.5"
|
||
|
app:layout_constraintStart_toStartOf="parent"
|
||
| ... | ... | |
|
android:layout_width="wrap_content"
|
||
|
android:layout_height="wrap_content"
|
||
|
android:text="@string/main_decminite"
|
||
|
android:onClick="@{() -> viewModel.decrementMeasuredAt(10)}"
|
||
|
app:layout_constraintBottom_toBottomOf="@+id/button_main_incminite"
|
||
|
app:layout_constraintEnd_toEndOf="parent"
|
||
|
app:layout_constraintHorizontal_bias="0.5"
|
||
| ... | ... | |
|
android:layout_width="wrap_content"
|
||
|
android:layout_height="wrap_content"
|
||
|
android:text="@string/main_submit"
|
||
|
android:onClick="@{() -> viewModel.submitTemperature(numberpickerMainIntegral.getValue(), numberpickerMainFraction.getValue())}"
|
||
|
app:layout_constraintBottom_toBottomOf="@+id/numberpicker_main_fraction"
|
||
|
app:layout_constraintEnd_toEndOf="parent"
|
||
|
app:layout_constraintHorizontal_bias="0.5"
|
||
refs #189 Improved button event to use data binding more.