我试图从firebase数据库中的(Confesses表)中检索数据,但不是所有数据,我想对它做一个条件并在recycleView中显示结果,它对我有用,我检索具体的我想要的数据,但它在recycleView中调用一个空行...
我的firebase数据库中有3个对象,两个对象达到我想要的条件,另一个没有实现它...所以当我显示数据时,只有两个对象必须出现,不幸的是所有对象出现,但没有达到条件的对象出现但是空了......请参见下面的图片
初始化:
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);
}
}
答案 0 :(得分:2)
我通过在我的“FirebaseRecyclerAdapter”中添加了一个过滤器来解决这个问题。 现在它正在工作:D
mPostAdapter = new FirebaseRecyclerAdapter<Confess, PostViewHolder>(
Confess.class,
R.layout.sample_confess,
PostViewHolder.class,
mFirebaseDatabase.orderByChild("idReceiver").equalTo(userId)
)
答案 1 :(得分:1)
在Firebase中进行查询将会像
一样 mFirebaseDatabase = FirebaseDatabase.getInstance()
.getReference().child("Confesses")
.orderByChild("YOUR_FIELD").equalTo("Value")
.getRef()
但是你不能查询AND,或者......这意味着你的查询中只有一个 orderByChild
还有更多可以使用的查询
.startAt(“”)
<强> .endAt( “”)强>
<强> .limitToFirst()强>
<强> .limitToLast()强>