1

코드 아래는 필요한 모든 작업을 수행 한 것처럼 보이지만, recyclerview는 채워지지 않고 있습니다.Recyclerview는 어떤 아이디어도 표시하지 않습니까? FirestoreUI RecyclerAdapter 사용하기

Log on 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 –

+0

전에 오류가 발생했습니다. query = reference.orderBy ("timestamp") 오류가 발생했습니다.); –