在适配器中过滤Firebase数据会留下空白区域

时间:2017-08-24 00:26:35

标签: android firebase firebase-realtime-database firebaseui

我需要在(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有效,但适配器仍显示空白空间用于其他不需要的记录

0 个答案:

没有答案