実現したいこと
以下のような datepicker を独自実装したいと考えています。
※日付部分を recyclerView で実装。
発生している問題
dialog 内で recyclerView のデータを表示させることができない。
該当のソースコード
ダイアログの生成 / CalenderDialogFragment
kotlin
1class CalenderDialogFragment:DialogFragment(){ 2 3 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { 4 var builder = AlertDialog.Builder(activity) 5 builder.setView(R.layout.fragment_dialog_calender) 6 return builder.create() 7 } 8 9 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 10 super.onViewCreated(view, savedInstanceState) 11 12 var dateList = arrayListOf<String>("1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1","1") 13 date_list_in_calender.layoutManager = GridLayoutManager(activity,7) 14 date_list_in_calender.adapter = CalnderListAdapter(dateList) 15 } 16}
RceclerView の Adapter を設定 / CalnderListAdapter
kotlin
1class CalnderListAdapter(private val dataset : ArrayList<String>): RecyclerView.Adapter<CalnderListAdapter.ViewHolder>(){ 2 3 class ViewHolder(var view: View): RecyclerView.ViewHolder(view){ 4 var date = view.calender_item_date 5 } 6 7 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { 8 val view:View = LayoutInflater.from(parent.context) 9 .inflate(R.layout.list_item_calender, parent, false) 10 return ViewHolder(view) 11 } 12 13 override fun onBindViewHolder(holder: ViewHolder, position: Int) { 14 holder.date.text = dataset[position] 15 } 16 17 override fun getItemCount() = dataset.size 18}
RecyclerView の レイアウト / fragment_dialog_calender.xml
xml
1<?xml version="1.0" encoding="utf-8"?> 2<androidx.appcompat.widget.LinearLayoutCompat 3 xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" 4 android:orientation="vertical" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent"> 7 8 <androidx.appcompat.widget.LinearLayoutCompat 9 android:layout_width="wrap_content" 10 android:layout_height="48dp" 11 android:layout_marginTop="8dp" 12 android:orientation="horizontal" 13 android:gravity="center" 14 android:layout_gravity="center"> 15 16 <androidx.appcompat.widget.AppCompatImageButton 17 android:layout_width="wrap_content" 18 android:layout_height="wrap_content" 19 android:padding="4dp" 20 android:layout_marginRight="32dp" 21 android:background="@android:color/transparent" 22 android:tint="@color/colorGS01_Black" 23 android:src="@drawable/ic_chevron_left_24dp"/> 24 25 <androidx.appcompat.widget.AppCompatTextView 26 android:layout_width="wrap_content" 27 android:layout_height="wrap_content" 28 android:text="2019年1月" 29 android:textSize="16sp" 30 android:textColor="@color/colorGS01_Black"/> 31 32 <androidx.appcompat.widget.AppCompatImageButton 33 android:layout_width="wrap_content" 34 android:layout_height="wrap_content" 35 android:padding="4dp" 36 android:layout_marginLeft="32dp" 37 android:background="@android:color/transparent" 38 android:tint="@color/colorGS01_Black" 39 android:src="@drawable/ic_chevron_right_24dp"/> 40 </androidx.appcompat.widget.LinearLayoutCompat> 41 42 <androidx.appcompat.widget.LinearLayoutCompat 43 android:layout_width="match_parent" 44 android:layout_height="wrap_content" 45 android:orientation="horizontal" 46 android:layout_gravity="center"> 47 48 <androidx.appcompat.widget.AppCompatTextView 49 android:layout_width="0dp" 50 android:layout_height="48dp" 51 android:layout_weight="1" 52 android:gravity="center" 53 android:text="月" 54 android:textSize="14sp" 55 android:textColor="@color/colorGS03_Grey"/> 56 57 <androidx.appcompat.widget.AppCompatTextView 58 android:layout_width="0dp" 59 android:layout_height="48dp" 60 android:layout_weight="1" 61 android:gravity="center" 62 android:text="火" 63 android:textSize="14sp" 64 android:textColor="@color/colorGS03_Grey"/> 65 66 <androidx.appcompat.widget.AppCompatTextView 67 android:layout_width="0dp" 68 android:layout_height="48dp" 69 android:layout_weight="1" 70 android:gravity="center" 71 android:text="水" 72 android:textSize="14sp" 73 android:textColor="@color/colorGS03_Grey"/> 74 75 <androidx.appcompat.widget.AppCompatTextView 76 android:layout_width="0dp" 77 android:layout_height="48dp" 78 android:layout_weight="1" 79 android:gravity="center" 80 android:text="木" 81 android:textSize="14sp" 82 android:textColor="@color/colorGS03_Grey"/> 83 84 <androidx.appcompat.widget.AppCompatTextView 85 android:layout_width="0dp" 86 android:layout_height="48dp" 87 android:layout_weight="1" 88 android:gravity="center" 89 android:text="金" 90 android:textSize="14sp" 91 android:textColor="@color/colorGS03_Grey"/> 92 93 <androidx.appcompat.widget.AppCompatTextView 94 android:layout_width="0dp" 95 android:layout_height="48dp" 96 android:layout_weight="1" 97 android:gravity="center" 98 android:text="土" 99 android:textSize="14sp" 100 android:textColor="@color/colorGS03_Grey"/> 101 102 <androidx.appcompat.widget.AppCompatTextView 103 android:layout_width="0dp" 104 android:layout_height="48dp" 105 android:layout_weight="1" 106 android:gravity="center" 107 android:text="日" 108 android:textSize="14sp" 109 android:textColor="@color/colorGS03_Grey"/> 110 111 </androidx.appcompat.widget.LinearLayoutCompat> 112 113 <androidx.recyclerview.widget.RecyclerView 114 android:id="@+id/date_list_in_calender" 115 android:layout_width="match_parent" 116 android:layout_height="wrap_content"> 117 118 </androidx.recyclerview.widget.RecyclerView> 119</androidx.appcompat.widget.LinearLayoutCompat>
RecyclerView のリストレイアウト / list_item_calender
xml
1<?xml version="1.0" encoding="utf-8"?> 2<androidx.appcompat.widget.LinearLayoutCompat 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:orientation="horizontal" 5 android:layout_width="wrap_content" 6 android:layout_height="wrap_content"> 7 8 <androidx.appcompat.widget.LinearLayoutCompat 9 android:layout_width="0dp" 10 android:layout_height="48dp" 11 android:layout_weight="1" 12 android:orientation="horizontal" 13 android:gravity="center"> 14 15 <androidx.appcompat.widget.AppCompatTextView 16 android:id="@+id/calender_item_date" 17 android:layout_width="36dp" 18 android:layout_height="36dp" 19 android:background="@drawable/bg_circle" 20 android:backgroundTint="@color/colorGS06_White" 21 android:gravity="center" 22 android:layout_gravity="center" 23 android:textSize="14sp" 24 android:textColor="@color/colorGS01_Black" 25 android:text="1"/> 26 27 </androidx.appcompat.widget.LinearLayoutCompat> 28 29</androidx.appcompat.widget.LinearLayoutCompat>
補足
プログラミング初心者なので、情報不足や検討違いな箇所があるかと思いますが、どうぞよろしくお願いします。
必要な情報がかけている場合、追記いたします。
回答1件
あなたの回答
tips
プレビュー