ホームページ >Java >&#&チュートリアル >Firebase-UI 3.1 に更新した後、FirebaseListAdapter が個々のチャット メッセージをプッシュしないのはなぜですか?
FirebaseListAdapter がチャット アプリの個々のアイテムをプッシュしない - Firebase-UI 3.1
チャット アプリケーションの開発において、表示しようとすると問題が発生する可能性がありますカスタム ListView の Firebase データベースから取得されたメッセージ。これは、依存関係、特に firebase-ui ライブラリのバージョンを 3.1.0 に更新するときに発生する可能性があります。以下は、この問題の原因と解決策を示しています。
問題
Firebase-UI 3.1.0 に更新した後、FirebaseListAdapter の構築にコードが使用されました。より長く意図どおりに動作します。アダプターの直接インスタンス化に依存していた以前のアプローチは非推奨になりました。
解決策
この問題を解決するには、コードを適合するように調整する必要があります。 Firebase-UI の新しい要件。これには、FirebaseListOptions オブジェクトを作成し、それをパラメータとして FirebaseListAdapter コンストラクターに渡すことが含まれます。
FirebaseListOptions<ChatMessage> options = new FirebaseListOptions.Builder<ChatMessage>() .setQuery(FirebaseDatabase.getInstance().getReference("Lobbies").child(leaderID).child("Messages"), ChatMessage.class).setLayout(R.layout.message).build(); adapter = new FirebaseListAdapter<ChatMessage>(options) { @Override protected void populateView(View v, ChatMessage model, int position) { // Get references to the views of message.xml TextView messageText = v.findViewById(R.id.message_text); TextView messageUser = v.findViewById(R.id.message_user); TextView messageTime = v.findViewById(R.id.message_time); // Set their text messageText.setText(model.getMessageText()); messageUser.setText(model.getMessageUser()); // Format the date before showing it messageTime.setText(DateFormat.format("dd-MM-yyyy (HH:mm:ss)", model.getMessageTime())); } };
Listener Lifecycle Management
リストビューにデータを表示するには、FirebaseListAdapterリスナーを使用して Firebase データベースの変更を監視します。このリスナーはアクティビティのライフサイクル内で開始および停止する必要があります:
@Override protected void onStart() { super.onStart(); adapter.startListening(); } @Override protected void onStop() { super.onStop(); adapter.stopListening(); }
これらの手順を実装すると、FirebaseListAdapter はチャット アプリケーションの ListView に個々のメッセージを正常に表示します。
以上がFirebase-UI 3.1 に更新した後、FirebaseListAdapter が個々のチャット メッセージをプッシュしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。