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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Kotlin

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

Q&A

解決済

1回答

530閲覧

FirestoreのデータをRecycleViewに表示させたい

masato01

総合スコア11

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Kotlin

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

0グッド

0クリップ

投稿2022/03/02 04:48

今やっていること

Kotlinで掲示板アプリを作っています。

Firestoreから、Recycleviewにデータを読み取って画面に表示させたいと思っています。
いろいろなサイトを参考にしながら進めてきましたが、分からないところがでてきました。

Firestoreから読み取りたいものは
・名前
・投稿した時間
・タイトル
・詳細
・(アイコン)←まだFirestorageに保存していない

質問したいこと

たくさんあってすみません。

・データクラスは必要か
・データクラスの、投稿時間「var createAt: Date = Date(System.currentTimeMillis()),」はあっているのか。また、必要か。
・CustomAdapterクラスをどこで継承するのか
・他にも意味のないコードがあったり、必要なコードがあったら教えていただきたいです。

コード

1行分のレイアウト

item_post.xml

1<?xml version="1.0" encoding="utf-8"?> 2<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="match_parent" 4 android:layout_height="150dp" 5 android:clickable="true" 6 android:focusable="true" 7 android:padding="12dp"> 8 9 <de.hdodenhof.circleimageview.CircleImageView 10 android:id="@+id/icon" 11 android:layout_width="60dp" 12 android:layout_height="60dp" /> 13 14 <LinearLayout 15 android:layout_width="0dp" 16 android:layout_height="wrap_content" 17 android:layout_marginStart="16dp" 18 android:layout_weight="1" 19 android:orientation="vertical"> 20 21 <LinearLayout 22 android:layout_width="match_parent" 23 android:layout_height="wrap_content" 24 android:orientation="horizontal"> 25 26 <TextView 27 android:id="@+id/tvname" 28 android:layout_width="0dp" 29 android:layout_height="wrap_content" 30 android:layout_weight="1" 31 android:textSize="20sp" 32 android:textStyle="bold" 33 android:layout_margin="5dp"/> 34 35 <TextView 36 android:id="@+id/tvtime" 37 android:layout_width="0dp" 38 android:layout_height="wrap_content" 39 android:layout_weight="1" 40 android:textSize="20sp" 41 android:layout_margin="5dp"/> 42 43 </LinearLayout> 44 45 <TextView 46 android:id="@+id/tvtitle" 47 android:layout_width="match_parent" 48 android:layout_height="wrap_content" 49 android:layout_marginBottom="4dp" 50 android:textColor="#000000" 51 android:textSize="34sp" 52 android:textStyle="bold"/> 53 54 <TextView 55 android:id="@+id/tvpost" 56 android:layout_width="match_parent" 57 android:layout_height="wrap_content" 58 android:textColor="#000000" 59 android:textSize="25sp" /> 60 61 </LinearLayout> 62</LinearLayout>

データクラス

Post.kt

1package com.example.a.Post 2 3import java.sql.Date 4 5data class Post( 6 val icon: Int, 7 val title: String, 8 val detail: String, 9 var createAt: Date = Date(System.currentTimeMillis()), 10)

アダプター

CustomAdapter.kt

1package com.example.a.Post 2 3import android.view.LayoutInflater 4import android.view.View 5import android.view.ViewGroup 6import android.widget.ImageView 7import android.widget.TextView 8import androidx.recyclerview.widget.RecyclerView 9import com.example.a.R 10import org.w3c.dom.Text 11 12class CustomAdapter(private val postlist: ArrayList<Post>) : 13 RecyclerView.Adapter<CustomAdapter.ViewHolder>() { 14 15 class ViewHolder(view: View) : RecyclerView.ViewHolder(view) { 16 17 val icon: ImageView 18 val title: TextView 19 val post: TextView 20 21 init { 22 icon = view.findViewById(R.id.icon) 23 title = view.findViewById(R.id.tvtitle) 24 post = view.findViewById(R.id.tvpost) 25 } 26 } 27 28 //レイアウトの設定 29 override fun onCreateViewHolder(viewGroup: ViewGroup, viewType: Int): ViewHolder { 30 val view = 31 LayoutInflater.from(viewGroup.context).inflate(R.layout.item_post, viewGroup, false) 32 return ViewHolder(view) 33 } 34 35 //Viewの設定 36 override fun onBindViewHolder(viewHolder: ViewHolder, position: Int) { 37 val post = postlist[position] 38 39 viewHolder.icon.setImageResource(post.icon) 40 viewHolder.title.text = post.title 41 viewHolder.post.text = post.detail 42 } 43 44 //表示数を返す 45 override fun getItemCount(): Int = postlist.size 46}

表示させるフラグメント

HomeFragment.kt

1package com.example.a.Home 2 3import android.content.ContentValues.TAG 4import android.content.Intent 5import androidx.lifecycle.ViewModelProvider 6import android.os.Bundle 7import android.util.Log 8import androidx.fragment.app.Fragment 9import android.view.LayoutInflater 10import android.view.View 11import android.view.ViewGroup 12import com.example.a.Post.CustomAdapter 13import com.example.a.Post.PostScreenActivity 14import com.example.a.databinding.HomeFragmentBinding 15import com.google.firebase.auth.ktx.auth 16import com.google.firebase.firestore.CollectionReference 17import com.google.firebase.firestore.Query 18import com.google.firebase.firestore.ktx.firestore 19import com.google.firebase.ktx.Firebase 20 21class HomeFragment : Fragment() { 22 23 companion object { 24 fun newInstance() = HomeFragment() 25 } 26 27 private lateinit var viewModel: HomeViewModel 28 private var _binding: HomeFragmentBinding? = null 29 private val binding get() = _binding!! 30 31 override fun onCreateView( 32 inflater: LayoutInflater, container: ViewGroup?, 33 savedInstanceState: Bundle? 34 ): View? { 35 _binding = HomeFragmentBinding.inflate(inflater, container, false) 36 val view = binding.root 37 return view 38 } 39 40 override fun onViewCreated(view: View, savedInstanceState: Bundle?) { 41 super.onViewCreated(view, savedInstanceState) 42 binding.btnpostsc.setOnClickListener { 43 startActivity( 44 Intent( 45 context, 46 PostScreenActivity::class.java 47 ) 48 ) 49 } 50 51 val db = Firebase.firestore 52 val user = Firebase.auth.currentUser 53 val uid = user!!.uid 54 55 val citiesRef = db.collection("users").document(uid).collection("UserPosts") 56 citiesRef.orderBy("createdDay", Query.Direction.DESCENDING) 57 citiesRef.get() 58 .addOnSuccessListener { Log.d(TAG, "読み取り成功") } 59 .addOnFailureListener { Log.d(TAG, "読み取り失敗") } 60 } 61 62 63 override fun onActivityCreated(savedInstanceState: Bundle?) { 64 super.onActivityCreated(savedInstanceState) 65 viewModel = ViewModelProvider(this).get(HomeViewModel::class.java) 66 // TODO: Use the ViewModel 67 } 68 69 70 override fun onDestroyView() { 71 super.onDestroyView() 72 _binding = null 73 } 74 75}

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

自己解決

間違えました。すみません

投稿2022/03/02 04:53

masato01

総合スコア11

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問