Android Can';按子级顺序筛选Firebase数据

Android Can';按子级顺序筛选Firebase数据,android,android-fragments,firebase,firebase-realtime-database,firebaseui,Android,Android Fragments,Firebase,Firebase Realtime Database,Firebaseui,我想显示按用户ID过滤的Firebase数据。但该应用程序崩溃,调试后在Firebase适配器上显示NullPointerException。怎么办?我在片段中实现它。我没有粘贴导入的库 这是我的密码: public class MyPosts extends Fragment{ private RecyclerView postList; private DatabaseReference mDatabase; private DatabaseReference m

我想显示按用户ID过滤的Firebase数据。但该应用程序崩溃,调试后在Firebase适配器上显示NullPointerException。怎么办?我在片段中实现它。我没有粘贴导入的库

这是我的密码:

public class MyPosts extends Fragment{


    private RecyclerView postList;
    private DatabaseReference mDatabase;
    private DatabaseReference mDatabaseAppriciate;
    private DatabaseReference mDatabaseDisgrace;
    private LinearLayoutManager layoutManager;
    private FirebaseAuth mAuth= FirebaseAuth.getInstance();
    private DatabaseReference mDatabaseCurrentUser;
    public Query mQueryCurrentUser=null;

    //private static final String TAG = "MyActivity";

    private boolean mProcessAppriciate=false;
    private boolean mProcessDisgrace=false;



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {


        super.onSaveInstanceState(savedInstanceState);
        View rootView = inflater.inflate(R.layout.allposts, container, false);



        mDatabase= FirebaseDatabase.getInstance().getReference().child("Posts");
        mDatabaseAppriciate=FirebaseDatabase.getInstance().getReference().child("Appriciate");
        mDatabaseDisgrace=FirebaseDatabase.getInstance().getReference().child("Disgrace");

        mDatabase.keepSynced(true);
        mDatabaseAppriciate.keepSynced(true);
        mDatabaseDisgrace.keepSynced(true);




        //EXPERIMENT WITH LISTVIEW STARTS
        postList=(RecyclerView) rootView.findViewById(R.id.postList);
        postList.setHasFixedSize(true);
        layoutManager=new LinearLayoutManager(getActivity());
        layoutManager.setReverseLayout(true);
        postList.setHasFixedSize(true);
        postList.setLayoutManager(layoutManager);


        postList.getRecycledViewPool().clear();




        //EXPERIMENT WITH LISTVIEW ENDS
        return rootView;
    }

    @Override
    public void onStart() {
        super.onStart();

        //EXP CODE STARTS

        FirebaseAuth.getInstance().addAuthStateListener(new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();
                if (user != null) {
                    // User is signed in

                    mDatabaseCurrentUser=FirebaseDatabase.getInstance().getReference().child("Posts");

                    String currentUserId=user.getUid();

                    mQueryCurrentUser=mDatabaseCurrentUser.orderByChild("uid").equalTo(currentUserId);


                }else{

                }
            }

        });

        //EXP CODE ENDS

        FirebaseRecyclerAdapter<Posts,PostViewHolder> firebaseRecyclerAdapter= new FirebaseRecyclerAdapter<Posts,PostViewHolder>(

                Posts.class,
                R.layout.single_post,
                PostViewHolder.class,
                mQueryCurrentUser

        ) {

            @Override
            protected void populateViewHolder(final PostViewHolder viewHolder, final Posts model, final int position) {

                final String post_key=getRef(position).getKey();


                viewHolder.setTitle(model.getTitle());
                viewHolder.setDescription(model.getDescription());
                viewHolder.setProfileName(model.getProfilename());
                viewHolder.setImage(getContext(),model.getImage());
                viewHolder.getLayoutPosition();
                viewHolder.setAppriciateButton(post_key);
                viewHolder.setDisgraceButton(post_key);



                //Share click code below
                viewHolder.Share.setOnClickListener(new View.OnClickListener() {

                    CallbackManager callbackManager;
                    ShareDialog shareDialog;
                    @Override
                    public void onClick(View v) {

                        FacebookSdk.sdkInitialize(getApplicationContext());
                        callbackManager = CallbackManager.Factory.create();
                        shareDialog = new ShareDialog(MyPosts.this);
                        if (ShareDialog.canShow(ShareLinkContent.class)) {


                            ShareLinkContent content = new ShareLinkContent.Builder()
                                    .setContentTitle(model.getTitle())
                                    .setContentDescription(model.getDescription())
                                    .setImageUrl(Uri.parse(model.getImage()))
                                    .setContentUrl(Uri.parse("https://developers.facebook.com"))
                                    .build();
                            shareDialog.show(content);

                            shareDialog.registerCallback(callbackManager, new FacebookCallback<Sharer.Result>() {
                                @Override
                                public void onSuccess(Sharer.Result result) {

                                }

                                @Override
                                public void onCancel() {

                                }

                                @Override
                                public void onError(FacebookException error) {

                                }
                            });
                        }
                    }

                });




                //Share click code ends above
                //Appriciate button on click event below

                viewHolder.Appriciate.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mProcessAppriciate=true;



                        mDatabaseAppriciate.addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                if (mProcessAppriciate) {

                                    if (dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())) {
                                        mDatabaseAppriciate.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();

                                        mProcessAppriciate = false;

                                    }else {
                                        mDatabaseAppriciate.child(post_key).child(mAuth.getCurrentUser().getUid()).setValue(mAuth.getCurrentUser().getDisplayName());

                                        mProcessAppriciate = false;

                                    }
                                }
                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {
                            }
                        });
                    }
                });


                //Appriciate button click event CODE ENDS


                //Disgrace Button Click Event Code Starts
                viewHolder.Disgrace.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mProcessDisgrace=true;



                        mDatabaseDisgrace.addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                if (mProcessDisgrace) {

                                    if (dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())) {
                                        mDatabaseDisgrace.child(post_key).child(mAuth.getCurrentUser().getUid()).removeValue();

                                        mProcessDisgrace = false;

                                    } else {
                                        mDatabaseDisgrace.child(post_key).child(mAuth.getCurrentUser().getUid()).setValue(mAuth.getCurrentUser().getDisplayName());

                                        mProcessDisgrace = false;


                                    }

                                }
                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {

                            }
                        });

                    }

                });

                //Disgrace Button Click code Ends

            }

        };

        postList.setAdapter(firebaseRecyclerAdapter);


        //test code
        firebaseRecyclerAdapter.notifyDataSetChanged();

    }


    public static class PostViewHolder extends RecyclerView.ViewHolder{

        View mView;
        Button Appriciate;
        Button Disgrace;
        Button Share;
        DatabaseReference mDatabaseAppriciate;
        DatabaseReference mDatabaseDisgrace;
        FirebaseAuth mAuth;




        public PostViewHolder(View itemView) {
            super(itemView);
            mView=itemView;
            Appriciate=(Button) mView.findViewById(R.id.appriciate);
            Disgrace=(Button) mView.findViewById(R.id.disgraceful);
            Share=(Button) mView.findViewById(R.id.share);


            mDatabaseAppriciate=FirebaseDatabase.getInstance().getReference().child("Appriciate");
            mDatabaseDisgrace=FirebaseDatabase.getInstance().getReference().child("Disgrace");
            mAuth=FirebaseAuth.getInstance();
            mDatabaseAppriciate.keepSynced(true);
            mDatabaseDisgrace.keepSynced(true);


        }

        public void setAppriciateButton(final String post_key){

            mDatabaseAppriciate.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if(dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())){
                        Appriciate.setBackgroundColor(Color.GRAY);
                        Appriciate.setText("Appriciated");

                    }else{
                        Appriciate.setBackgroundColor(Color.GREEN);
                        Appriciate.setText("APPRICIATE");
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

        }

        //SET DISGRACE BUTTON CODE BELOW
        public void setDisgraceButton(final String post_key){

            mDatabaseDisgrace.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if(dataSnapshot.child(post_key).hasChild(mAuth.getCurrentUser().getUid())){
                        Disgrace.setBackgroundColor(Color.GRAY);
                        Disgrace.setText("Disgraced");

                    }else{
                        Disgrace.setBackgroundColor(Color.RED);

                        Disgrace.setText("DISGRACE");
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {

                }
            });

        }

        //SET DISGRACE BUTTON CODE ENDS

        //Setting the title to the AllActivity
        public void setTitle(String title){
            TextView postTitle=(TextView) mView.findViewById(R.id.allPostTitle);
            postTitle.setText(title);

        }

        public void setDescription(String description){
            TextView postDescription=(TextView) mView.findViewById(R.id.allPostDescription);
            postDescription.setText(description);
        }
        //PROFILE NAME EXPERIMENT

        public void setProfileName(String profilename){
            TextView postName=(TextView) mView.findViewById(R.id.profileName);
            postName.setText(profilename);
        }




        public void setImage(final Context context, final String image) {
            final ImageView postImage=(ImageView) mView.findViewById(R.id.allPostImage);
            with(context).load(image).networkPolicy(NetworkPolicy.OFFLINE).into(postImage, new Callback() {
                @Override
                public void onSuccess() {

                }

                @Override
                public void onError() {



                    Picasso.with(context).load(image).resize(500,700).into(postImage);

                }
            });

    }


    //THREADING EXPERIMENT CODE

    }


}
公共类MyPosts扩展片段{
私人RecyclerView postList;
私有数据库参考数据库;
私有数据库引用mdatabaseappricate;
私有数据库引用mdatabaselume;
私人专线经理;布局经理;
私有FirebaseAuth mAuth=FirebaseAuth.getInstance();
私有数据库引用mDatabaseCurrentUser;
公共查询mQueryCurrentUser=null;
//私有静态最终字符串TAG=“MyActivity”;
私有布尔MPProcessAppricate=false;
私有布尔MProcess=false;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
super.onSaveInstanceState(savedInstanceState);
视图根视图=充气机。充气(R.layout.allpost,container,false);
mDatabase=FirebaseDatabase.getInstance().getReference().child(“Posts”);
mdatabaseappricate=FirebaseDatabase.getInstance().getReference().child(“appricate”);
mdatabaseluce=FirebaseDatabase.getInstance().getReference().child(“耻辱”);
mDatabase.keepSynced(true);
mDatabaseAppriciate.keepSynced(true);
mdatabase耻辱。保持同步(true);
//开始使用LISTVIEW进行实验
postList=(RecyclerView)rootView.findviewbyd(R.id.postList);
setHasFixedSize(true);
layoutManager=新的LinearLayoutManager(getActivity());
layoutManager.setReverseLayout(true);
setHasFixedSize(true);
setLayoutManager(layoutManager);
getRecycledViewPool().clear();
//使用LISTVIEW端点进行实验
返回rootView;
}
@凌驾
public void onStart(){
super.onStart();
//EXP代码开始
FirebaseAuth.getInstance().addAuthStateListener(新的FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
FirebaseUser=firebaseAuth.getCurrentUser();
如果(用户!=null){
//用户已登录
mDatabaseCurrentUser=FirebaseDatabase.getInstance().getReference().child(“Posts”);
字符串currentUserId=user.getUid();
mQueryCurrentUser=mDatabaseCurrentUser.orderByChild(“uid”).equalTo(currentUserId);
}否则{
}
}
});
//EXP代码结束
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(
Posts.class,
R.单柱布局图,
PostViewHolder.class,
mQueryCurrentUser
) {
@凌驾
受保护的void populateViewHolder(最终PostViewHolder、最终Posts模型、最终int位置){
最后一个字符串post_key=getRef(位置).getKey();
setTitle(model.getTitle());
viewHolder.setDescription(model.getDescription());
setProfileName(model.getProfilename());
setImage(getContext(),model.getImage());
getLayoutPosition();
viewHolder.SETAPPRECIATE按钮(post_键);
viewHolder.SETU按钮(post_键);
//分享下面的点击代码
viewHolder.Share.setOnClickListener(新视图.OnClickListener(){
CallbackManager CallbackManager;
共享对话框共享对话框;
@凌驾
公共void onClick(视图v){
sdkinInitialize(getApplicationContext());
callbackManager=callbackManager.Factory.create();
shareDialog=新建shareDialog(MyPosts.this);
if(ShareDialog.canShow(ShareLinkContent.class)){
ShareLinkContent=新的ShareLinkContent.Builder()
.setContentTitle(model.getTitle())
.setContentDescription(model.getDescription())
.setImageUrl(Uri.parse(model.getImage()))
.setContentUrl(Uri.parse(“https://developers.facebook.com"))
.build();
显示(内容);
registerCallback(callbackManager,newfacebookcallback()){
@凌驾
成功时公开作废(共享结果){
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常错误){
}
});
}
}
});
//共享点击代码结束以上
//单击下面的“事件”上的“通知”按钮
viewHolder.appricate.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
MPProcessAppricate=真;
mdatabaseAppricate.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
如果(mProc