0

我試圖從Firebase數據庫中的(Confesses表)檢索數據,但不是所有數據,我想對它做出條件並顯示結果recycleView,它爲我工作,我檢索我想要的具體數據,但它在回收視圖中調用一個空行...如何在Firebase中搜索(SELECT和WHERE)並將它們放到回收視圖

我有3個對象在我的firebase數據庫中,兩個對象實現條件我想,另一個沒有實現它......所以當我顯示數據時,只有兩個對象必須出現,不幸的是所有的對象都出現了,但是沒有達到條件的對象卻出現了,但是是空的。下面的圖片

This picture shows the problem

初始化:

rView = (RecyclerView) findViewById(R.id.confess_list); 
    rView.setHasFixedSize(true); 
    rView.setLayoutManager(new LinearLayoutManager(this)); 
    mFirebaseDatabase = FirebaseDatabase.getInstance().getReference().child("Confesses"); 
    setupAdapter(); 
    rView.setAdapter(mPostAdapter); 

這裏是我把

private void setupAdapter() { 
    mPostAdapter = new FirebaseRecyclerAdapter<Confess, PostViewHolder>(
      Confess.class, 
      R.layout.sample_confess, 
      PostViewHolder.class, 
      mFirebaseDatabase 
    ) { 
     @Override 
     protected void populateViewHolder(PostViewHolder viewHolder, final Confess model, int position) { 
      db = new SQLiteHandler(getApplicationContext()); 
      final HashMap<String, String> user = db.getUserDetails(); 

      if (model.getIdReceiver().equals(user.get("idUser"))){ 
       viewHolder.setContent(StringEscapeUtils.unescapeJava(model.getConfessContent())); 
       viewHolder.setDate(model.getCreated_at()); 
      } 


     } 
    }; 
} 

ViewHolder類

public static class PostViewHolder extends RecyclerView.ViewHolder { 

    public EmojiconTextView emojyView; 
    public TextView dateView; 


    public PostViewHolder(View itemView) { 
     super(itemView); 
     emojyView = (EmojiconTextView) itemView.findViewById(R.id.emojicon_text_viewMain); 
     dateView = (TextView) itemView.findViewById(R.id.c_date); 
    } 


    public void setContent(String content) { 
     emojyView.setText(content); 
    } 

    public void setDate(String date) { 
     dateView.setText(date); 
    } 
} 

Here is my data structure

+0

https://firebase.googleblog.com/2013/10/queries-part-1-common-sql-queries.html?m=1 –

+0

您需要在喲前過濾數據庫參考你把它放在適配器中,但是你沒有在你的問題中提供數據庫的結構,所以很難提供幫助 –

+0

嗨,夥計,謝謝你的回答......這是我的數據結構 http:// imgh。我的結構 請幫我看看 –

回答

1

,使查詢條件在火力地堡會像

 mFirebaseDatabase = FirebaseDatabase.getInstance() 
     .getReference().child("Confesses") 
     .orderByChild("YOUR_FIELD").equalTo("Value") 
     .getRef() 

你不能老是查詢AND,OR ..這意味着將有隻有一個orderByChild在查詢

,並有更多的查詢您可以使用像

.startAt( 「 」)

.endAt(「」)

.limitToFirst()

.limitToLast()

+0

你不想按日期排序嗎?那麼equalTo在這裏如何篩選出其他用戶ID?那不是比較交談的ID嗎? –

+0

.child(「Confesses」)。orderby(「idReciver」)。equalto(「lkasdfjkl」) 嘗試它,它就像在哪裏(uid == sdlkfj) – Elsunhoty

+0

爲什麼你需要通過ID而不是日期? –

1

我通過增加一個過濾器,以我的 'FirebaseRecyclerAdapter' 現在,它的工作解決了這個問題:d

mPostAdapter = new FirebaseRecyclerAdapter<Confess, PostViewHolder>(
      Confess.class, 
      R.layout.sample_confess, 
      PostViewHolder.class, 
      mFirebaseDatabase.orderByChild("idReceiver").equalTo(userId) 
    ) 
相關問題