リビジョン 1f41ee5b
| learn/android/TempRecorderJetpackKt/app/src/main/java/com/torutk/android/temprecorder/jetpackkt/BindingUtils.kt | ||
|---|---|---|
|
|
||
|
import android.widget.TextView
|
||
|
import androidx.databinding.BindingAdapter
|
||
|
import com.torutk.android.temprecorder.jetpackkt.domain.Temperature
|
||
|
import java.time.LocalDateTime
|
||
|
import java.time.format.DateTimeFormatter
|
||
|
|
||
|
internal var formatter: DateTimeFormatter? = null
|
||
|
|
||
|
@BindingAdapter("measuredAtFormatted")
|
||
|
fun TextView.setMeasuredAtFormatted(item: Temperature) {
|
||
|
val pattern = context.resources.getString(R.string.main_measured_at_format)
|
||
|
val formatter = DateTimeFormatter.ofPattern(pattern)
|
||
|
text = item.measuredAt.format(formatter)
|
||
|
}
|
||
|
fun TextView.setMeasuredAtFormatted(dateTime: LocalDateTime) {
|
||
|
if (formatter == null) {
|
||
|
val pattern = context.resources.getString(R.string.main_measured_at_format)
|
||
|
formatter = DateTimeFormatter.ofPattern(pattern)
|
||
|
}
|
||
|
text = dateTime.format(formatter)
|
||
|
}
|
||
| learn/android/TempRecorderJetpackKt/app/src/main/java/com/torutk/android/temprecorder/jetpackkt/MainActivity.kt | ||
|---|---|---|
|
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)
|
||
|
|
||
|
// 検温日時の変更監視と表示設定
|
||
|
val measuredAtObserver = Observer<LocalDateTime> {
|
||
|
binding.textviewMainMeasuredat.text = it.format(DATE_TIME_VIEW_FORMATTER)
|
||
|
}
|
||
|
temperatureViewModel.measuredAt.observe(this, measuredAtObserver)
|
||
|
// 検温日時の増減操作
|
||
|
binding.buttonMainIncminite.setOnClickListener { temperatureViewModel.incrementMeasuredAt(10) }
|
||
|
binding.buttonMainDecminite.setOnClickListener { temperatureViewModel.decrementMeasuredAt(10) }
|
||
| learn/android/TempRecorderJetpackKt/app/src/main/res/layout/activity_main.xml | ||
|---|---|---|
|
|
||
|
<data>
|
||
|
<variable
|
||
|
name="temperatureViewModel"
|
||
|
name="viewModel"
|
||
|
type="com.torutk.android.temprecorder.jetpackkt.MainViewModel" />
|
||
|
</data>
|
||
|
|
||
| ... | ... | |
|
app:layout_constraintEnd_toEndOf="parent"
|
||
|
app:layout_constraintStart_toStartOf="parent"
|
||
|
app:layout_constraintTop_toBottomOf="@+id/textview_main_submittitle"
|
||
|
app:measuredAtFormatted="@{viewModel.measuredAt}"
|
||
|
tools:text="09.27 21:22" />
|
||
|
|
||
|
<Button
|
||
| learn/android/TempRecorderJetpackKt/app/src/main/res/layout/item_temperature.xml | ||
|---|---|---|
|
android:layout_weight="1"
|
||
|
android:textAlignment="center"
|
||
|
android:textSize="16sp"
|
||
|
app:measuredAtFormatted="@{temperature}" />
|
||
|
app:measuredAtFormatted="@{temperature.measuredAt}" />
|
||
|
|
||
|
<TextView
|
||
|
android:id="@+id/measurement"
|
||
refs #189 Improved textview of measuredAt to use binding more.