1

コード以下はすべて必要な作業を行ったようですが、recyclerviewはまだ読み込まれていません。Recyclerviewに何も表示されていませんか? FirestoreUI RecyclerAdapterの使用

Log OnDateChangeを呼び出して、それが呼び出されたかどうかを確認し、Galaxy S6で実行した後にLogCatで一度呼び出されました。また、データベースは公開されています。

RecyclerView chat_view; 
EditText message_text; 

CollectionReference reference = FirebaseFirestore.getInstance().collection("stage2"); 
Query query = reference.orderBy("timestamp"); 
FirestoreRecyclerAdapter<ChatMessage,ChatHolder> adapter=null; 




@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_chat); 
    //initializing, called below 
    init(); 
} 





private FirestoreRecyclerAdapter<ChatMessage,ChatHolder> newAdapter() { 
    final FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder<ChatMessage>() 
      .setQuery(query,ChatMessage.class) 
      .setLifecycleOwner(this)     
          .build(); 

    return new FirestoreRecyclerAdapter<ChatMessage, ChatHolder>(options) { 
     @Override 
     public ChatHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_item,parent,false); 
      //if(((ChatMessage)options.getSnapshots().getSnapshot(viewType)).) 
      return new ChatHolder(view); 
     } 

     @Override 
     protected void onBindViewHolder(ChatHolder holder, int position, ChatMessage model) {   




      //displaying the message and users into the recyclerview 
      holder.user_msg.setText(model.getMessage()); 
      holder.user_date.setText(model.getDate()); 
      holder.user_name.setText(model.getName()); 

     } 




     @Override 
     public void onDataChanged() { 
      Log.d("TAG", "YESSIR"); 

     } 

     @Override 
     public void onError(FirebaseFirestoreException e) { 
      super.onError(e); 
     } 
    }; 




} 

private void init(){ 
    chat_view = (RecyclerView) findViewById(R.id.chat_view); 
    chat_view.setVerticalScrollBarEnabled(true); 
    LinearLayoutManager layoutManager = new LinearLayoutManager(this); 

    chat_view.setLayoutManager(layoutManager); 
    adapter = newAdapter(); 
    chat_view.setAdapter(adapter); 




    message_text = (EditText) findViewById(R.id.message_text); 
    message_text.setEnabled(appUtils.isSignedIn()); 
    findViewById(R.id.send_button).setEnabled(appUtils.isSignedIn()); 




} 

私たちはそれを持っているので、この時点でどのような問題が起こっているのか分かりません。私は最新のFirestore UI依存関係も使用しています。

答えて

0

あなたはすべてを必要としました。FirestoreRecycleroptionsを使用し、onCreateViewHolderにレイアウトを拡張しているようです。

FirestoreRecyclerAdapterには、アクティビティに関するデータを持たせるために、onStart()の変更を、onCreate()の後に聞く必要があります。また、 をonStopに入れると、リスニングを停止することができます。

@Override 
public void onStart() { 
    super.onStart(); 
    adapter.startListening(); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    adapter.stopListening(); 
} 
+0

ああ、私はそれを行いました。私は、それと、recyclerOptionsのLifecycleOwnerメソッドと同じ問題を試しました。 –

+0

@BaldricNguena setContentViewがグローバル変数として宣言しても、setContentViewの前にそれらを初期化しないと、コレクション参照とクエリとfirestore.getinstanceを試して移動しようとしました –

+0

私はそれを理解しましたが、query = reference.orderBy( "timestamp" ); –

関連する問題