Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果值等于true,Firebase将显示帖子_Firebase_Firebase Realtime Database_Android Recyclerview_Firebase Storage - Fatal编程技术网

如果值等于true,Firebase将显示帖子

如果值等于true,Firebase将显示帖子,firebase,firebase-realtime-database,android-recyclerview,firebase-storage,Firebase,Firebase Realtime Database,Android Recyclerview,Firebase Storage,我正在使用FirebaseRecyclerAdapter,我需要显示post for uses ids equals true,这是我的firebase数据库: { 以下:{ ORBBKfZAAUhqI1h7ojQDzYOjgkp1:{ z2SNUlLd6mQM8nnlkU2VUws5Ggl2:{ UID:z2SNUlLd6mQM8nnlkU2VUws5Ggl2 } }, pypD1SYZkbcYesk09WuMUY1AkTf1:{ ORBBKfZAAUhqI1h7ojQDzYOjgkp1:{

我正在使用FirebaseRecyclerAdapter,我需要显示post for uses ids equals true,这是我的firebase数据库:

{ 以下:{ ORBBKfZAAUhqI1h7ojQDzYOjgkp1:{ z2SNUlLd6mQM8nnlkU2VUws5Ggl2:{ UID:z2SNUlLd6mQM8nnlkU2VUws5Ggl2 } }, pypD1SYZkbcYesk09WuMUY1AkTf1:{ ORBBKfZAAUhqI1h7ojQDzYOjgkp1:{ UID:ORBBKfZAAUhqI1h7ojQDzYOjgkp1, 用户名:阿里 }, z2SNUlLd6mQM8nnlkU2VUws5Ggl2:{ UID:z2SNUlLd6mQM8nnlkU2VUws5Ggl2, 用户名:阿里 } }, z2SNUlLd6mQM8nnlkU2VUws5Ggl2:{ ORBBKfZAAUhqI1h7ojQDzYOjgkp1:正确, pypD1SYZkbcYesk09WuMUY1AkTf1:正确 } }, 职位:{ -KduqnVVczZf5uibQiZ-:{ 描述:gg, 轮廓:https://twitter.com/2Top/profile_image?size=original, 时间:14881230655, UID:PYPD1SYZKBCYESK09WUMY1AKTF1, 用户名:迈克, 壁纸:https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped906285501.jpg?alt=media&token=0c1a3a3d-6e48-4c4e-ba59-f5646bf8965f }, -Ke5gJ00CxbjhOuhzLIx:{ 描述:朝觐, 时间:1488318465, UID:z2SNUlLd6mQM8nnlkU2VUws5Ggl2, 用户名:迈克, 壁纸:https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1717103943.jpg?alt=media&token=a85b2488-5ac7-49a7-9ad0-dbf4e6f29389 }, -KeCuiFmUCpN19zwsTsR:{ 描述:a, 轮廓:https://lh4.googleusercontent.com/-suB77riNoX8/AAAAAAAAAAI/AAAAAAAAAAA/ADPlhfKMzINn-Ki538Sqf6SRGaXC81-WuQ/s200-c/photo.jpg, 时间:1488439652, UID:ORBBKfZAAUhqI1h7ojQDzYOjgkp1, 用户名:2top, 壁纸:https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1913886685.jpg?alt=media&token=c8ad26b2-8f09-453b-b48a-aad9e4d8b5c3 }, -KeD2fBUQ09HVMrvAneb:{ 描述:ee, 轮廓:https://lh4.googleusercontent.com/-suB77riNoX8/AAAAAAAAAAI/AAAAAAAAAAA/ADPlhfKMzINn-Ki538Sqf6SRGaXC81-WuQ/s200-c/photo.jpg, 时间:1488441999, UID:ORBBKfZAAUhqI1h7ojQDzYOjgkp1, 用户名:2to7p, 壁纸:https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1904338270.jpg?alt=media&token=d200b7fc-15e7-4dc4-9913-59c377929e9e }, -KeDfnMWiB7k_4J3FBgZ:{ 描述:f12g, 轮廓:https://lh4.googleusercontent.com/-suB77riNoX8/AAAAAAAAAAI/AAAAAAAAAAA/ADPlhfKMzINn-Ki538Sqf6SRGaXC81-WuQ/s200-c/photo.jpg, 时间:1488452517, UID:z2SNUlLd6mQM8nnlkU2VUws5Ggl2, 用户名:2top, 壁纸:https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1872832638.jpg?alt=media&token=80239844-a872-47e2-9689-92d368dd9452 }, -KeDfrw4inUQFtIDXJHp:{ 描述:fg, 轮廓:https://lh4.googleusercontent.com/-suB77riNoX8/AAAAAAAAAAI/AAAAAAAAAAA/ADPlhfKMzINn-Ki538Sqf6SRGaXC81-WuQ/s200-c/photo.jpg, 时间:1488452536, UID:z2SNUlLd6mQM8nnlkU2VUws5Ggl2, 用户名:2top, 壁纸:https://firebasestorage.googleapis.com/v0/b/test-3f4c5.appspot.com/o/Posts%2Fcropped1872832638.jpg?alt=media&token=80239844-a872-47e2-9689-92d368dd9452 } }, 用户:{ 1 DUK1PHEEOAIMX8IOOSPEMEWCPM2:{ 用户名:汤姆 }, BOWNDGAERXIBNVJ7IJY1EKFIDC3:{ 用户名:7uthaifah }, ECWHIksxJ0Q5SUlIrev4BjnjmrJ3:{ 轮廓:https://lh3.googleusercontent.com/-p1mB5WbUN2s/AAAAAAAAAAI/AAAAAAAAAAo/r3Z4o-VSODQ/s200-c/photo.jpg, 用户名:Jice }, I5o3JMpYHwZXQD0t2ogWHCQbrZv1:{ 轮廓:https://lh3.googleusercontent.com/-p1mB5WbUN2s/AAAAAAAAAAI/AAAAAAAAAAo/r3Z4o-VSODQ/s200-c/photo.jpg, 用户名:迈克 }, ORBBKfZAAUhqI1h7ojQDzYOjgkp1:{ 封面:http://lucascontabil.com/home/wp-content/uploads/2015/05/city-wallpaper-7-400x200.jpg, 轮廓:https://lh5.googleusercontent.com/-IAMp28UlmE/AAAAAAAAAAI/AAAAAAAAAAA/AAomvV2EM8Ut2nW9j0YE2vRZhJyQBHMsrA/s200-c/photo.jpg, UID:ORBBKfZAAUhqI1h7ojQDzYOjgkp1, 用户名:Dom }, ZxqBgLq4ekUJii05AvV86z0i3mH2:{ 轮廓:https://lh3.googleusercontent.com/-p1mB5WbUN2s/AAAAAAAAAAI/AAAAAAAAAAo/r3Z4o-VSODQ/s200-c/photo.jpg, 用户名:Jone }, mZ5jjPNLlcc8OguVzWJLAYhavmg1:{ 轮廓:https://twitter.com/2Top/profile_image?size=original, 用户名:Twitter }, pypD1SYZkbcYesk09WuMUY1AkTf1:{ 轮廓:https://lh3.googleusercontent.com/-p1mB5WbUN2s/AAAAAAAAAAI/AAAAAAAAAAo/r3Z4o-VSODQ/s200-c/photo.jpg, 用户名:迈克 }, z2SNUlLd6mQM8nnlkU2VUws5Ggl2:{ 封面:http://lucascontabil.com/home/wp-content/uploads/2015/05/city-wallpaper-7-400x200.jpg, 电邮:@dd, 轮廓:https://lh4.googleusercontent.com/-suB77riNoX8/AAAAAAAAAAI/AAAAAAAAAAA/ADPlhfKMzINn-Ki538Sqf6SRGaXC81-WuQ/s200-c/photo.jpg, UID:z2SNUlLd6mQM8nnlkU2VUws5Ggl2, 用户名:2 277顶 } }
} 你可以通过使用普通的回收适配器来实现你想要的。使用当前的数据库设计,您将无法将所需内容转换为单个firebase查询,因此FirebaseRecyclerAdapter已过时

mDatabaseFriends.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for(DataSnapshot following : dataSnapshot.getChildren()) {
                mDatabase.orderByChild("UID").equalTo(following.getKey()).addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        Getting_Posts model = dataSnapshot.getValue(Getting_Posts.class);
                        // Here you can add your 'post' to a dataset that you can use to initialize a new RecyclerAdapter
                    }

                    @Override
                    public void onCancelled(DatabaseError databaseError) {

                    }
                });
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
另一种选择是简单地更改数据库设计,以允许使用FirebaseRecyclerAdapter或FirebaseIndexRecyclerAdapter,后者更可能使用。我认为您需要使用客户端扇出来实现这一点

这些链接应该与您试图实现的目标相关

编辑:添加了特定于此情况的代码 已经有一段时间了,我现在无法测试代码,但是请告诉我这是否对您有效

首先是适配器

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.PostViewHolder> {
    private ArrayList<Getting_Posts> mdataSet;

    public RecyclerAdapter(ArrayList<Getting_Posts> dataSet) {
        mdataSet = dataSet;
    }

    @Override
    public RecyclerAdapter.PostViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View inflatedView = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_card_design, parent, false);
        return new PostViewHolder(inflatedView);
    }

    @Override
    public void onBindViewHolder(RecyclerAdapter.PostViewHolder holder, int position) {
        Gettings_Posts post = mdataSet.get(position);
        // Set the properties of the holder
        // I don't know what properties you used in the viewholder so I'll just give an example
        // example: holder.Name.setText(post.getName());
    }

    @Override
    public int getItemCount() {
        return mdataSet.size();
    }

    public void add(int position, Getting_Posts post) {
        mdataset.add(position, post);
        notifyItemInserted(position);
    }
}
然后添加我的原始解决方案,只需替换以下行

Getting_Posts model = dataSnapshot.getValue(Getting_Posts.class);
用这个

mAdapter.add(mAdapter.mdataSet.size(), dataSnapshot.getValue(Getting_Posts.class));
mAdapter.notifyDataSetChanged();

就像我说的,我没有时间测试它,所以可能会有一些错误,但我想给你一些东西来处理。您应该能够在RecyclerView和RecyclerAdapter online上找到大量文档,以帮助您解决此问题。

您的问题中包含了JSON树的图片。请将其替换为实际的JSON作为文本,您可以通过单击Firebase数据库控制台中的导出JSON链接轻松获得该文本。将JSON作为文本使其具有可搜索性,允许我们轻松使用它来测试您的实际数据,并在我们的答案中使用它,这通常是一件好事。我更新了问题,现在检查它。是的,每次您使用=new FirebaseRecyclerAdapter时,它基本上会销毁旧的问题,并用新的问题替换它。我认为,在这种情况下,你应该使用普通的RecyclerAdapter,而不是FirebaseRecyclerAdapter。请记住,我是编程新手,所以你能给我一个完美的解决方案吗?好的,给我几分钟。这个方法对我有效,但它只显示1个uid,如果post uid等于下面的第一个用户uid show post,所以它只适用于第一个UID你能发布屏幕截图吗?这对我来说很好。首先,谢谢你的时间,我了解了所有的方法,我会在以后把它们添加到应用程序中,但是有没有一种更快的方法来做到这一点,而不是添加新的回收器和浪费时间。。。我认为有一个查询我可以使用它,如果没有办法,那么我将添加您的方法,并再次感谢您在您的时间里为我提供的帮助。您可能可以使用FirebaseIndexRecyclerView进行此操作,但您必须重新设计您的数据库。你应该试着阅读我添加的链接。另外,看看Firefeed。这是一个用Firebase构建的twitter克隆,它还具有以下功能。然后我会使用你的方法,我认为他们会更好地帮助我。
Getting_Posts model = dataSnapshot.getValue(Getting_Posts.class);
mAdapter.add(mAdapter.mdataSet.size(), dataSnapshot.getValue(Getting_Posts.class));
mAdapter.notifyDataSetChanged();