我需要在(int)类型上过滤Firebase数据库的子项,该类型必须等于1,2和6。 使用Nobase过滤Firebase
是不可能的所以我会记录所有记录并告诉适配器不要全部显示它们
我的代码基于Firebase的数据库示例并修改了继承的类
public class AllPostsFragment extends PostListFragment {
此方法将采用所有记录(帖子)
@Override
public Query getQuery(DatabaseReference databaseReference) {
Query AllPostsQuery = databaseReference.child("posts");
// I can not have multiple equal : Query AllPostsQuery = databaseReference.child("posts").orderByChild("type").equalTo(5);
return AllPostsQuery;
}
然后 适配器
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
// Set up Layout Manager, reverse layout
mManager = new LinearLayoutManager(getActivity());
mManager.setReverseLayout(true);
mManager.setStackFromEnd(true);
mRecycler.setLayoutManager(mManager);
// Set up FirebaseRecyclerAdapter with the Query
Query postsQuery = getQuery(mDatabase);
mAdapter = new FirebaseRecyclerAdapter<Post, PostViewHolder>(Post.class, R.layout.item_post,
PostViewHolder.class, postsQuery) {
@Override
protected void populateViewHolder(final PostViewHolder viewHolder, final Post model, final int position) {
final DatabaseReference postRef = getRef(position);
if ((model.type!=1)&& (model.type!=2) && (model.type!=6)) viewHolder.itemView.setVisibility(View.GONE);
else viewHolder.itemView.setVisibility(View.VISIBLE);
// Set click listener for the whole post view
final String postKey = postRef.getKey();
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Launch PostDetailActivity .... ....
});
}
};
mRecycler.setAdapter(mAdapter);
}
setVisibility有效,但适配器仍显示空白空间用于其他不需要的记录