概要
前回なんとなくいい感じにレイアウトは作成できたので、今回は日付の部分を手作業で入れていた箇所を動的に入れられるようにしたいと思います。
目標
カレンダーの日付をデータバインディングを用いてアクティビティから動的に設定する
手順
Activityからレイアウトの値を変更する
まずは最小限のActivity→レイアウト変更を書きます。
package com.example.myfavoritecontentsmanage
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.example.myfavoritecontentsmanage.databinding.ActivityMainBinding
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
super.onCreate(savedInstanceState)
// setContentView(R.layout.activity_main)
binding.cell1.text = "サンプル"
}
}
こうすると表示画面の一番最初のテキストが「サンプル」に変わったと思います。
これでActivityの方からレイアウトの値をいじることができるようになりました。
日付を設定していく
IDを工夫したので指定するときにそこが可変的にできたらいいなと思ったのですが、そんなに世の中甘くないみたいでJS時代のようにid名を変数みたいに指定するってことができないみたいなので、配列を渡してレイアウトの方でそれを解釈してもらう方法にします...(絶対やり方ちがうんだろうな...)
まずレイアウトの方を修正します。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="date"
type="String[]" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--縦分割のガイドライン-->
<androidx.constraintlayout.widget.Guideline
android:id="@+id/youbi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.1" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.25" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.40" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.55" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.70" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.85" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/line_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="1" />
<!--横分割のガイドライン-->
<androidx.constraintlayout.widget.Guideline
android:id="@+id/row1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.14" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/row2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.28" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/row3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.42" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/row4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.56" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/row5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.70" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/row6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.84" />
<androidx.constraintlayout.widget.Guideline
android:id="@+id/row7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="1" />
<TextView
android:id="@+id/sunday"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_red"
android:gravity="center_horizontal|center_vertical"
android:text="Sun"
app:layout_constraintBottom_toBottomOf="@id/youbi"
app:layout_constraintEnd_toEndOf="@id/row1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/monday"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="Mon"
app:layout_constraintBottom_toBottomOf="@id/youbi"
app:layout_constraintEnd_toEndOf="@id/row2"
app:layout_constraintStart_toEndOf="@+id/row1"
app:layout_constraintTop_toTopOf="@+id/sunday" />
<TextView
android:id="@+id/tuesday"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="Tue"
app:layout_constraintBottom_toBottomOf="@id/youbi"
app:layout_constraintEnd_toEndOf="@id/row3"
app:layout_constraintStart_toEndOf="@+id/row2"
app:layout_constraintTop_toTopOf="@+id/sunday" />
<TextView
android:id="@+id/wednesday"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="Wed"
app:layout_constraintBottom_toBottomOf="@id/youbi"
app:layout_constraintEnd_toEndOf="@id/row4"
app:layout_constraintStart_toEndOf="@+id/row3"
app:layout_constraintTop_toTopOf="@+id/sunday" />
<TextView
android:id="@+id/thursday"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="Thu"
app:layout_constraintBottom_toBottomOf="@id/youbi"
app:layout_constraintEnd_toEndOf="@id/row5"
app:layout_constraintStart_toEndOf="@+id/row4"
app:layout_constraintTop_toTopOf="@+id/sunday" />
<TextView
android:id="@+id/friday"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="Fri"
app:layout_constraintBottom_toBottomOf="@id/youbi"
app:layout_constraintEnd_toEndOf="@id/row6"
app:layout_constraintStart_toEndOf="@+id/row5"
app:layout_constraintTop_toTopOf="@+id/sunday" />
<TextView
android:id="@+id/saturday"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_blue"
android:gravity="center_horizontal|center_vertical"
android:text="Sat"
app:layout_constraintBottom_toBottomOf="@id/youbi"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/row6"
app:layout_constraintTop_toTopOf="@+id/sunday" />
<TextView
android:id="@+id/cell_1"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_red"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[0]}"
app:layout_constraintBottom_toBottomOf="@id/line_1"
app:layout_constraintEnd_toEndOf="@id/row1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/youbi" />
<TextView
android:id="@+id/cell_2"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[1]}"
app:layout_constraintBottom_toBottomOf="@id/line_1"
app:layout_constraintEnd_toEndOf="@id/row2"
app:layout_constraintStart_toEndOf="@+id/row1"
app:layout_constraintTop_toTopOf="@id/youbi" />
<TextView
android:id="@+id/cell_3"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[2]}"
app:layout_constraintBottom_toBottomOf="@id/line_1"
app:layout_constraintEnd_toEndOf="@id/row3"
app:layout_constraintStart_toEndOf="@+id/row2"
app:layout_constraintTop_toTopOf="@id/youbi" />
<TextView
android:id="@+id/cell_4"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[3]}"
app:layout_constraintBottom_toBottomOf="@id/line_1"
app:layout_constraintEnd_toEndOf="@id/row4"
app:layout_constraintStart_toEndOf="@+id/row3"
app:layout_constraintTop_toTopOf="@id/youbi" />
<TextView
android:id="@+id/cell_5"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[4]}"
app:layout_constraintBottom_toBottomOf="@id/line_1"
app:layout_constraintEnd_toEndOf="@id/row5"
app:layout_constraintStart_toEndOf="@+id/row4"
app:layout_constraintTop_toTopOf="@id/youbi" />
<TextView
android:id="@+id/cell_6"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[5]}"
app:layout_constraintBottom_toBottomOf="@id/line_1"
app:layout_constraintEnd_toEndOf="@id/row6"
app:layout_constraintStart_toEndOf="@+id/row5"
app:layout_constraintTop_toTopOf="@id/youbi" />
<TextView
android:id="@+id/cell_7"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_blue"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[6]}"
app:layout_constraintBottom_toBottomOf="@id/line_1"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/row6"
app:layout_constraintTop_toTopOf="@id/youbi" />
<TextView
android:id="@+id/cell_21"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_red"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[7]}"
app:layout_constraintBottom_toBottomOf="@id/line_2"
app:layout_constraintEnd_toEndOf="@id/row1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/line_1" />
<TextView
android:id="@+id/cell_22"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[8]}"
app:layout_constraintBottom_toBottomOf="@id/line_2"
app:layout_constraintEnd_toEndOf="@id/row2"
app:layout_constraintStart_toEndOf="@+id/row1"
app:layout_constraintTop_toTopOf="@id/line_1" />
<TextView
android:id="@+id/cell_23"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[9]}"
app:layout_constraintBottom_toBottomOf="@id/line_2"
app:layout_constraintEnd_toEndOf="@id/row3"
app:layout_constraintStart_toEndOf="@+id/row2"
app:layout_constraintTop_toTopOf="@id/line_1" />
<TextView
android:id="@+id/cell_24"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[10]}"
app:layout_constraintBottom_toBottomOf="@id/line_2"
app:layout_constraintEnd_toEndOf="@id/row4"
app:layout_constraintStart_toEndOf="@+id/row3"
app:layout_constraintTop_toTopOf="@id/line_1" />
<TextView
android:id="@+id/cell_25"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[11]}"
app:layout_constraintBottom_toBottomOf="@id/line_2"
app:layout_constraintEnd_toEndOf="@id/row5"
app:layout_constraintStart_toEndOf="@+id/row4"
app:layout_constraintTop_toTopOf="@id/line_1" />
<TextView
android:id="@+id/cell_26"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[12]}"
app:layout_constraintBottom_toBottomOf="@id/line_2"
app:layout_constraintEnd_toEndOf="@id/row6"
app:layout_constraintStart_toEndOf="@+id/row5"
app:layout_constraintTop_toTopOf="@id/line_1" />
<TextView
android:id="@+id/cell_27"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_blue"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[13]}"
app:layout_constraintBottom_toBottomOf="@id/line_2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/row6"
app:layout_constraintTop_toTopOf="@id/line_1" />
<TextView
android:id="@+id/cell_31"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_red"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[14]}"
app:layout_constraintBottom_toBottomOf="@id/line_3"
app:layout_constraintEnd_toEndOf="@id/row1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/line_2" />
<TextView
android:id="@+id/cell_32"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[15]}"
app:layout_constraintBottom_toBottomOf="@id/line_3"
app:layout_constraintEnd_toEndOf="@id/row2"
app:layout_constraintStart_toEndOf="@+id/row1"
app:layout_constraintTop_toTopOf="@id/line_2" />
<TextView
android:id="@+id/cell_33"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[16]}"
app:layout_constraintBottom_toBottomOf="@id/line_3"
app:layout_constraintEnd_toEndOf="@id/row3"
app:layout_constraintStart_toEndOf="@+id/row2"
app:layout_constraintTop_toTopOf="@id/line_2" />
<TextView
android:id="@+id/cell_34"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[17]}"
app:layout_constraintBottom_toBottomOf="@id/line_3"
app:layout_constraintEnd_toEndOf="@id/row4"
app:layout_constraintStart_toEndOf="@+id/row3"
app:layout_constraintTop_toTopOf="@id/line_2" />
<TextView
android:id="@+id/cell_35"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[18]}"
app:layout_constraintBottom_toBottomOf="@id/line_3"
app:layout_constraintEnd_toEndOf="@id/row5"
app:layout_constraintStart_toEndOf="@+id/row4"
app:layout_constraintTop_toTopOf="@id/line_2" />
<TextView
android:id="@+id/cell_36"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[19]}"
app:layout_constraintBottom_toBottomOf="@id/line_3"
app:layout_constraintEnd_toEndOf="@id/row6"
app:layout_constraintStart_toEndOf="@+id/row5"
app:layout_constraintTop_toTopOf="@id/line_2" />
<TextView
android:id="@+id/cell_37"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_blue"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[20]}"
app:layout_constraintBottom_toBottomOf="@id/line_3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/row6"
app:layout_constraintTop_toTopOf="@id/line_2" />
<TextView
android:id="@+id/cell_41"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_red"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[21]}"
app:layout_constraintBottom_toBottomOf="@id/line_4"
app:layout_constraintEnd_toEndOf="@id/row1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/line_3" />
<TextView
android:id="@+id/cell_42"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[22]}"
app:layout_constraintBottom_toBottomOf="@id/line_4"
app:layout_constraintEnd_toEndOf="@id/row2"
app:layout_constraintStart_toEndOf="@+id/row1"
app:layout_constraintTop_toTopOf="@id/line_3" />
<TextView
android:id="@+id/cell_43"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[23]}"
app:layout_constraintBottom_toBottomOf="@id/line_4"
app:layout_constraintEnd_toEndOf="@id/row3"
app:layout_constraintStart_toEndOf="@+id/row2"
app:layout_constraintTop_toTopOf="@id/line_3" />
<TextView
android:id="@+id/cell_44"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[24]}"
app:layout_constraintBottom_toBottomOf="@id/line_4"
app:layout_constraintEnd_toEndOf="@id/row4"
app:layout_constraintStart_toEndOf="@+id/row3"
app:layout_constraintTop_toTopOf="@id/line_3" />
<TextView
android:id="@+id/cell_45"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[25]}"
app:layout_constraintBottom_toBottomOf="@id/line_4"
app:layout_constraintEnd_toEndOf="@id/row5"
app:layout_constraintStart_toEndOf="@+id/row4"
app:layout_constraintTop_toTopOf="@id/line_3" />
<TextView
android:id="@+id/cell_46"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[26]}"
app:layout_constraintBottom_toBottomOf="@id/line_4"
app:layout_constraintEnd_toEndOf="@id/row6"
app:layout_constraintStart_toEndOf="@+id/row5"
app:layout_constraintTop_toTopOf="@id/line_3" />
<TextView
android:id="@+id/cell_47"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_blue"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[27]}"
app:layout_constraintBottom_toBottomOf="@id/line_4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/row6"
app:layout_constraintTop_toTopOf="@id/line_3" />
<TextView
android:id="@+id/cell_51"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_red"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[28]}"
app:layout_constraintBottom_toBottomOf="@id/line_5"
app:layout_constraintEnd_toEndOf="@id/row1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/line_4" />
<TextView
android:id="@+id/cell_52"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[29]}"
app:layout_constraintBottom_toBottomOf="@id/line_5"
app:layout_constraintEnd_toEndOf="@id/row2"
app:layout_constraintStart_toEndOf="@+id/row1"
app:layout_constraintTop_toTopOf="@id/line_4" />
<TextView
android:id="@+id/cell_53"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[30]}"
app:layout_constraintBottom_toBottomOf="@id/line_5"
app:layout_constraintEnd_toEndOf="@id/row3"
app:layout_constraintStart_toEndOf="@+id/row2"
app:layout_constraintTop_toTopOf="@id/line_4" />
<TextView
android:id="@+id/cell_54"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[31]}"
app:layout_constraintBottom_toBottomOf="@id/line_5"
app:layout_constraintEnd_toEndOf="@id/row4"
app:layout_constraintStart_toEndOf="@+id/row3"
app:layout_constraintTop_toTopOf="@id/line_4" />
<TextView
android:id="@+id/cell_55"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[32]}"
app:layout_constraintBottom_toBottomOf="@id/line_5"
app:layout_constraintEnd_toEndOf="@id/row5"
app:layout_constraintStart_toEndOf="@+id/row4"
app:layout_constraintTop_toTopOf="@id/line_4" />
<TextView
android:id="@+id/cell_56"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[33]}"
app:layout_constraintBottom_toBottomOf="@id/line_5"
app:layout_constraintEnd_toEndOf="@id/row6"
app:layout_constraintStart_toEndOf="@+id/row5"
app:layout_constraintTop_toTopOf="@id/line_4" />
<TextView
android:id="@+id/cell_57"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_blue"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[34]}"
app:layout_constraintBottom_toBottomOf="@id/line_5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/row6"
app:layout_constraintTop_toTopOf="@id/line_4" />
<TextView
android:id="@+id/cell_61"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_red"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[35]}"
app:layout_constraintBottom_toBottomOf="@id/line_6"
app:layout_constraintEnd_toEndOf="@id/row1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/line_5" />
<TextView
android:id="@+id/cell_62"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[36]}"
app:layout_constraintBottom_toBottomOf="@id/line_6"
app:layout_constraintEnd_toEndOf="@id/row2"
app:layout_constraintStart_toEndOf="@+id/row1"
app:layout_constraintTop_toTopOf="@id/line_5" />
<TextView
android:id="@+id/cell_63"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[37]}"
app:layout_constraintBottom_toBottomOf="@id/line_6"
app:layout_constraintEnd_toEndOf="@id/row3"
app:layout_constraintStart_toEndOf="@+id/row2"
app:layout_constraintTop_toTopOf="@id/line_5" />
<TextView
android:id="@+id/cell_64"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[38]}"
app:layout_constraintBottom_toBottomOf="@id/line_6"
app:layout_constraintEnd_toEndOf="@id/row4"
app:layout_constraintStart_toEndOf="@+id/row3"
app:layout_constraintTop_toTopOf="@id/line_5" />
<TextView
android:id="@+id/cell_65"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[39]}"
app:layout_constraintBottom_toBottomOf="@id/line_6"
app:layout_constraintEnd_toEndOf="@id/row5"
app:layout_constraintStart_toEndOf="@+id/row4"
app:layout_constraintTop_toTopOf="@id/line_5" />
<TextView
android:id="@+id/cell_66"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[40]}"
app:layout_constraintBottom_toBottomOf="@id/line_6"
app:layout_constraintEnd_toEndOf="@id/row6"
app:layout_constraintStart_toEndOf="@+id/row5"
app:layout_constraintTop_toTopOf="@id/line_5" />
<TextView
android:id="@+id/cell_67"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/flame_style_blue"
android:gravity="center_horizontal|center_vertical"
android:text="@{date[41]}"
app:layout_constraintBottom_toBottomOf="@id/line_6"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/row6"
app:layout_constraintTop_toTopOf="@id/line_5" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
一番最初に配列を宣言して、それをすべての要素に当てはめていく構成にします。
こうすることで、配列に渡した通りのものが展開されます。
アクティビティでは、日にちの配列を作成しそれを渡すようにします。
package com.example.myfavoritecontentsmanage
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.example.myfavoritecontentsmanage.databinding.ActivityMainBinding
import java.util.*
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
super.onCreate(savedInstanceState)
// setContentView(R.layout.activity_main)
val calendar = Calendar.getInstance()
val year = 2020
val month = 6
val minDay = 1
calendar.set(year, month - 1, 1)
val maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH)
val dayArray: MutableList<String> = mutableListOf()
for (i in minDay..maxDay) {
dayArray.add(i.toString())
}
binding.date = dayArray.toTypedArray()
}
}
この状態で実行すると、まあ当たり前なのですが、最初の日曜日に1日になり、そこから月の日数分日にちが振られるようになります。
最初の曜日を考える
ただ、上記の状態ではだめで2020年6月の1日は月曜日です。
そうするために最初の1日の前に空白を入れるようにします。
調べたところ特定の日付の曜日は
calendar.get(Calendar.DAY_OF_WEEK)
みたいな感じに取れるらしく、しかも
曜日 | 数値 |
---|---|
日 | 1 |
月 | 2 |
火 | 3 |
水 | 4 |
木 | 5 |
金 | 6 |
土 | 7 |
こんな形で取れるみたいで、つまりこれは数値-1した分だけブランクを開ければ良さそうだぞ🤔
と思いアクティビティを下記のように書き換える。
package com.example.myfavoritecontentsmanage
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.example.myfavoritecontentsmanage.databinding.ActivityMainBinding
import java.util.*
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
super.onCreate(savedInstanceState)
// setContentView(R.layout.activity_main)
val calendar = Calendar.getInstance()
val year = 2020
val month = 6
val minDay = 1
calendar.set(year, month - 1, 1)
val maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH)
val blankDays = calendar.get(Calendar.DAY_OF_WEEK)
val dayArray: MutableList<String> = mutableListOf()
for (i in minDay until blankDays) {
dayArray.add("")
}
for (i in minDay..maxDay) {
dayArray.add(i.toString())
}
binding.date = dayArray.toTypedArray()
}
}
ちゃんと月曜に1日が設定されるようになりました!!!!!!
ちなみに去年の6月は2020の部分を2019にすればいいだけで、その状態で実行すると...

次回はこれを横にスワイプしたら次の月にいけるようにできたらいいな....