如何在回收者视图中仅获得我想要的物品

时间:2018-07-17 11:28:59

标签: android firebase firebase-realtime-database android-recyclerview model

我有一个recyclerview,我想在recycler视图中显示帖子。我的问题是我想仅在数据库中显示 popularlist =“ true” 的帖子...有照片我不想显示的enter image description here 请查看数据库结构。在这里,所有照片均默认为 popularlist =“ false” 我希望回收者视图检查其 popularlist =“ true” 如果它的 false 不应该显示照片,则需要在回收器视图中显示....任何人都可以告诉我该怎么做...

      @Override
public int getItemViewType ( int position ) {
    int viewType;
    if (moviesList.get(position).getType_post().contains("Photo") ) {

            viewType = IMAGE_TYPE;
    } else if(moviesList.get(position).getType_post().contains("Video")){
        viewType = VIDEO_TYPE;
    }
    return viewType;
}

我用这段代码检查照片或视频...我不知道过滤

我尝试过的事情 我在

下创建了一个界面作为listviewmodel
    interface ListViewModel {
    int VIEW_TYPE_PHOTO = 1;
    int VIEW_TYPE_VIDEO = 2;
    int getViewType();

   }

创建了两个模型类,分别称为photoviewmodel和videoviewmodel,它们扩展了listviewmodel

   class PhotoViewModel implements ListViewModel{

String image_path;

public PhotoViewModel(String image_path) {
    this.image_path = image_path;
}
@Override
public int getViewType() {
    return VIEW_TYPE_VIDEO;
}
}

在我拍摄照片的片段中,我在“回收者视图”所在的位置添加了此代码

       List<ListViewModel> listViewModels = new ArrayList<>();
                for (Photo photo : photos) {
                    if(photo.getPopularlist().contains("true")){
                        if(photo.getType_post().equals("Photo")){
                            List<PhotoViewModel> pho = new ArrayList<>();
                            PhotoViewModel p = new PhotoViewModel();
                            p.setImagePath(photo.getImage_path());
                            pho.add(p);

                            listViewModels.add(new PhotoViewModel(photo.getImage_path(),photo.getDescription(),photo.getDate_created()));
                           // Log.d(TAG, "onDataChange: alphs"+photoViewModel1.getImagePath());

                        }
                        if(photo.getType_post().equals("Video")){
                            listViewModels.add(new VideoViewModel(photo.getImage_path()));
                        }
                    }
                }

它显示了身体,但我没有得到图像路径和我在此处添加的片段中的其他东西

1 个答案:

答案 0 :(得分:1)

您需要添加查询:

DatabaseReference ref=FirebaseDatabase.getInstance().getReference();
Query query=ref.orderByChild("popularlist").equalTo(true);

然后,您将能够检索仅包含popularlist=true的数据

https://firebase.google.com/docs/reference/android/com/google/firebase/database/Query