質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

1回答

4184閲覧

dialog 内で recyclerView を表示したい

Aki_1988

総合スコア44

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2019/02/27 12:11

編集2019/02/27 13:54

実現したいこと

以下のような 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>

補足

プログラミング初心者なので、情報不足や検討違いな箇所があるかと思いますが、どうぞよろしくお願いします。
必要な情報がかけている場合、追記いたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kakajika

2019/02/27 13:03

レイアウトの問題の可能性が高いので、レイアウトファイルの内容を載せていただいた方がいいと思います。
Aki_1988

2019/02/27 13:56

ご指摘ありがとうございます! 追記してみました。文字数制限かかったので、XML 内の関係の低そうな箇所は記載しておりません。 具体的には fragment_dialog_calender の chip 系 UI です。
guest

回答1

0

ベストアンサー

すみません、よく読んでみたらプログラム側の問題でしたね。

FragmentのonViewCreatedメソッドは、onCreateViewメソッドにて何らかのViewを返すようにしていなければ呼ばれません。なので、以下のどちらかの方法で修正してみてください。

1. onCreateViewメソッドを実装する

onViewCreatedが呼ばれるようになりますが、onCreateDialogとの併用はできないのでご注意ください。

kotlin

1class CalenderDialogFragment : DialogFragment() { 2 override fun onCreateView(savedInstanceState: Bundle?): Dialog { 3 return inflater.inflate(R.layout.fragment_dialog_calender, container, false) 4 } 5 6 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 7 super.onViewCreated(view, savedInstanceState) 8 9 ... 10 } 11}

2. onCreateDialogの中でViewの生成含めすべての処理を行う

kotlin

1class CalenderDialogFragment : DialogFragment() { 2 override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { 3 var builder = AlertDialog.Builder(activity) 4 val view = activity.layoutInflater.inflate(R.layout.fragment_dialog_calender, null, false) 5 6 val 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") 7 view.date_list_in_calender.layoutManager = GridLayoutManager(activity,7) 8 view.date_list_in_calender.adapter = CalnderListAdapter(dateList) 9 10 builder.setView(view) 11 return builder.create() 12 } 13}

投稿2019/02/27 14:58

kakajika

総合スコア3131

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Aki_1988

2019/02/28 09:08 編集

回答ありがとうございます! onCreateDialogの中でViewの生成含めすべての処理を行う、で意図した動作になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問