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

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

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

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

Cloud Firestore

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

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

0回答

689閲覧

FirestoreのデータをRecyclerViewで表示する

nemo3002

総合スコア3

Firebase

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

Cloud Firestore

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

Java

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

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2020/12/31 09:08

編集2020/12/31 09:12

前提・実現したいこと

androidアプリでUIの設定にFirebaseUIのFirestoreRecyclerAdapterを用いてチャットアプリを作っています。そこで下に示すサイトの内容をとりあえずコピーして動かそうとしています。コードやfirestore上のデータは下のサイトの内容と同じものを作ったのですが、layoutファイル(xmlファイル)をどのように設定すればよいかがわかりません。(RecyclerViewは先に配置するべきなのか、setContentViewではどのlayoutファイルを指定するのか等)そこで色々自分で調べてみたのですが、何がわかっていないのかわからない状況です。

質問:FireRececlerAdapterを使うときlayoutファイルはどのように設定すればよいのでしょうか?

ぜひ皆さんの知恵を貸していただきたいです。よろしくお願いします。
参考にしたサイト

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

エラーメッセージ

該当のソースコード

Java

1package com.example.test; 2 3import androidx.appcompat.app.AppCompatActivity; 4 5import android.os.Bundle; 6import android.view.LayoutInflater; 7import android.view.View; 8import android.view.ViewGroup; 9 10import com.firebase.ui.firestore.FirestoreRecyclerAdapter; 11import com.firebase.ui.firestore.FirestoreRecyclerOptions; 12import com.google.firebase.firestore.FirebaseFirestore; 13import com.google.firebase.firestore.Query; 14 15public class MainActivity extends AppCompatActivity { 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 setContentView(R.layout.activity_main); 21 } 22 Query query = FirebaseFirestore.getInstance() 23 .collection("chats") 24 .orderBy("timestamp") 25 .limit(50); //最新の50個を取得 26 FirestoreRecyclerOptions<Chat> options = new FirestoreRecyclerOptions.Builder<Chat>() 27 .setQuery(query, Chat.class) 28 .build(); 29 FirestoreRecyclerAdapter adapter = new FirestoreRecyclerAdapter<Chat, ChatHolder>(options) { 30 @Override 31 public void onBindViewHolder(ChatHolder holder, int position, Chat model) 32 { 33 // ChatHolderにChatクラスのオブジェクトを入れていきます 34 holder.setMessage(model.getMessage()); 35 holder.setName(model.getName()); 36 } 37 38 @Override 39 public ChatHolder onCreateViewHolder(ViewGroup group, int i) { 40 // ここではViewHolderのインスタンスを作成します 41 View view = LayoutInflater.from(group.getContext()) 42 .inflate(R.layout.activity_main, group, false); 43 44 return new ChatHolder(view); 45 } 46 }; 47 @Override 48 protected void onStart() { 49 super.onStart(); 50 adapter.startListening(); 51 } 52 53 @Override 54 protected void onStop() { 55 super.onStop(); 56 adapter.stopListening(); 57 } 58}

Java

1package com.example.test; 2 3import android.view.View; 4import android.widget.TextView; 5 6import androidx.recyclerview.widget.RecyclerView; 7 8 9public class ChatHolder extends RecyclerView.ViewHolder { 10 11 public TextView messsageText; 12 public TextView nameText; 13 14 public ChatHolder(View itemView) { 15 super(itemView); 16 messsageText = itemView.findViewById(R.id.message_text); 17 nameText = itemView.findViewById(R.id.name_text); 18 } 19 20 public void setMessage(String message){ 21 messsageText.setText(message); 22 } 23 24 public void setName(String name){ 25 nameText.setText(name); 26 } 27}

Java

1package com.example.test; 2 3import com.google.firebase.firestore.ServerTimestamp; 4import com.google.type.Date; 5 6public class Chat { 7 private String mName; 8 private String mMessage; 9 private String mUid; 10 private Date mTimestamp; 11 12 public Chat() { } // Needed for Firebase 13 14 public Chat(String name, String message, String uid) { 15 mName = name; 16 mMessage = message; 17 mUid = uid; 18 } 19 20 public String getName() { return mName; } 21 22 public void setName(String name) { mName = name; } 23 24 public String getMessage() { return mMessage; } 25 26 public void setMessage(String message) { mMessage = message; } 27 28 public String getUid() { return mUid; } 29 30 public void setUid(String uid) { mUid = uid; } 31 32 @ServerTimestamp 33 public Date getTimestamp() { return mTimestamp; } 34 35 public void setTimestamp(Date timestamp) { mTimestamp = timestamp; } 36}

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

android studio 4.1.1を用いています。

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

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

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

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

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

hoshi-takanori

2021/01/01 07:59

とりあえず activity_main.xml と message.xml (MainActivity.java の onCreateViewHolder のところにも activity_main と書いてありますが、これは RecyclerView の各項目なので別の layout xml にすべき) の 2 つが必要ですね。 activity_main.xml には RecyclerView を、message.xml には TextView を 2 つ (message_text と namee_text) を配置しましょう。また、MainActivity の onCreate で RecyclerView に adapter (と layout manager) をセットする必要があります。さらに、メッセージ入力欄を作って送信する処理も必要でしょうね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問