java - com.google.firebase.database.DatabaseException : Can't convert object of type java. lang.String 输入 com.studentcornerapp.studentcorner.Posts.Posts

标签 java android database firebase exception

我想使用 Firebase Recycler 适配器显示所有用户帖子。但我收到 Firebase 数据库异常错误,并且我的应用程序崩溃了。我不知道我做错了什么?

我最初做的一切都是正确的,我的应用程序运行完美。然后我不知道我做错了什么,但现在我陷入困境,不知道如何解决这个问题。到目前为止,我认为我正在对其他一些 Activity 进行更改,但后来我撤消了它。但我不明白帖子中是如何发生错误的,因为我没有在这里进行任何更改,而且它之前运行得很好。

这是我的数据库引用:

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

这是我的 Firebase Recycler 适配器代码:

        FirebaseRecyclerOptions<Posts> options=new FirebaseRecyclerOptions.Builder<Posts>()
                .setQuery(postRef,Posts.class)
                .build();

        FirebaseRecyclerAdapter<Posts,PostsViewHolder> firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Posts, PostsViewHolder>(options)
        {
            @Override
            protected void onBindViewHolder(@NonNull final PostsViewHolder holder, int position, @NonNull final Posts model) {

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

                holder.itemView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent clickPostIntent=new Intent(MainActivity.this, ClickPostActivity.class);
                        clickPostIntent.putExtra("postKey",postKey);
                        startActivity(clickPostIntent);
                    }
                });

                holder.username.setText(model.getFullname());
                holder.date.setText(model.getDate());
                holder.time.setText(model.getTime());

                if (model.getPost_uri_link()!=null){
                    holder.post_link.setText(model.getPost_uri_link());
                }
                else {
                    holder.post_link.setVisibility(View.GONE);
                }
                if (model.getPost_file_name()!=null && model.getPost_file_uri()!=null) {
                    holder.file_attach_name.setText(model.getPost_file_name());
                    holder.file_attach_name.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            downloadFile(MainActivity.this,model.getPost_file_name(),"gs://studentcornerproject-be4c6.appspot.com/post files",model.getPost_file_uri());
                        }
                    });
                }
                else{
                    holder.file_attach_name.setVisibility(View.GONE);
                }

                if (model.getDescription()!=null) {
                    holder.description.setText(model.getDescription());
               }
                else {
                    holder.description.setVisibility(View.GONE);
                }

                if (model.getPost_img()!=null) {
                    Picasso.get().load(model.post_img).networkPolicy(NetworkPolicy.OFFLINE).into(holder.post_img, new Callback() {
                        @Override
                        public void onSuccess() {

                            postRef.child("post_img").keepSynced(true);
                        }

                        @Override
                        public void onError(Exception e) {

                            Picasso.get().load(model.post_img).into(holder.post_img);
                        }
                    });
                }
                else {
                    holder.post_img.setVisibility(View.GONE);
                }
                Picasso.get().load(model.profile_image).networkPolicy(NetworkPolicy.OFFLINE).into(holder.prof_img, new Callback() {
                    @Override
                    public void onSuccess() {

                    }

                    @Override
                    public void onError(Exception e) {

                        Picasso.get().load(model.profile_image).into(holder.prof_img);
                    }
                });
            }

            @NonNull
            @Override
            public PostsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

                View view= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.all_posts_users,viewGroup,false);
                PostsViewHolder viewHolder=new PostsViewHolder(view);
                return viewHolder;

            }
        };
        postslist.setAdapter(firebaseRecyclerAdapter);
        firebaseRecyclerAdapter.startListening();
    }

    public static class PostsViewHolder extends RecyclerView.ViewHolder
    {

       TextView username,date,time,description,file_attach_name,post_link;
        CircleImageView prof_img;
        ImageView post_img;

        public PostsViewHolder(@NonNull View itemView) {
            super(itemView);
            post_link=itemView.findViewById(R.id.post_link);
            username=itemView.findViewById(R.id.post_user_name);
            date=itemView.findViewById(R.id.post_date);
            time=itemView.findViewById(R.id.post_time);
            description=itemView.findViewById(R.id.post_description);
            file_attach_name=itemView.findViewById(R.id.post_filename);
            prof_img=itemView.findViewById(R.id.post_profile_img);
            post_img=itemView.findViewById(R.id.post_image);


        }
    }

这是我的 Posts.class:

 public String uid, date, time, description, fullname, profile_image, post_img, post_file_uri, post_file_name,post_uri_link;

    //default constructor
    public Posts() {

    }

    public Posts(String uid, String date, String time, String description, String fullname, String profile_image,String post_uri_link, String post_img, String post_file_uri, String post_file_name) {
        this.uid = uid;
        this.date = date;
        this.time = time;
        this.description = description;
        this.fullname = fullname;
        this.profile_image = profile_image;
        this.post_img = post_img;
        this.post_file_uri = post_file_uri;
        this.post_file_name = post_file_name;
        this.post_uri_link=post_uri_link;
    }

    public String getPost_uri_link() {
        return post_uri_link;
    }

    public void setPost_uri_link(String post_uri_link) {
        this.post_uri_link = post_uri_link;
    }

    public String getUid() {
        return uid;
    }

    public void setUid(String uid) {
        this.uid = uid;
    }

    public String getDate() {
        return date;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getTime() {
        return time;
    }

    public void setTime(String time) {
        this.time = time;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {

            this.description = description;

    }

    public String getFullname() {
        return fullname;
    }

    public void setFullname(String fullname) {
        this.fullname = fullname;
    }

    public String getProfile_image() {
        return profile_image;
    }

    public void setProfile_image(String profile_image) {
        this.profile_image = profile_image;
    }

    public String getPost_img() {
        return post_img;
    }

    public void setPost_img(String post_img) {
        this.post_img = post_img;
    }

    public String getPost_file_uri() {
        return post_file_uri;
    }

    public void setPost_file_uri(String post_file_uri) {
        this.post_file_uri = post_file_uri;
    }

    public String getPost_file_name() {
        return post_file_name;
    }

    public void setPost_file_name(String post_file_name) {
        this.post_file_name = post_file_name;
    }

我收到以下错误:

2019-05-23 01:41:13.708 26524-26524/com.studentcornerapp.studentcorner E/AndroidRuntime: FATAL EXCEPTION: main Process: com.studentcornerapp.studentcorner, PID: 26524 com.google.firebase.database.DatabaseException: Can't convert object of type java.lang.String to type com.studentcornerapp.studentcorner.Posts.Posts at com.google.android.gms.internal.firebase_database.zzkt.zzb(Unknown Source:209) at com.google.android.gms.internal.firebase_database.zzkt.zza(Unknown Source:0) at com.google.firebase.database.DataSnapshot.getValue(Unknown Source:10) at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:29) at com.firebase.ui.database.ClassSnapshotParser.parseSnapshot(ClassSnapshotParser.java:15) at com.firebase.ui.common.BaseCachingSnapshotParser.parseSnapshot(BaseCachingSnapshotParser.java:35) at com.firebase.ui.common.BaseObservableSnapshotArray.get(BaseObservableSnapshotArray.java:52) at com.firebase.ui.database.FirebaseRecyclerAdapter.getItem(FirebaseRecyclerAdapter.java:106) at com.firebase.ui.database.FirebaseRecyclerAdapter.onBindViewHolder(FirebaseRecyclerAdapter.java:122) at android.support.v7.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781) at android.support.v7.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823) at android.support.v7.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752) at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858) at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854) at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230) at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557) at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517) at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612) at android.support.v7.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924) at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641) at android.support.v7.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1888) at android.support.v7.widget.RecyclerView$1.run(RecyclerView.java:407) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:981) at android.view.Choreographer.doCallbacks(Choreographer.java:790) at android.view.Choreographer.doFrame(Choreographer.java:718) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:967) at android.os.Handler.handleCallback(Handler.java:808) at android.os.Handler.dispatchMessage(Handler.java:101) at android.os.Looper.loop(Looper.java:166) at android.app.ActivityThread.main(ActivityThread.java:7529) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)

最佳答案

我的问题已经解决了。存在数据库引用问题。现在一切正常。

关于java - com.google.firebase.database.DatabaseException : Can't convert object of type java. lang.String 输入 com.studentcornerapp.studentcorner.Posts.Posts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265193/

相关文章:

java - 如何根据 Elasticsearch 中文本字段的长度修改相关性分数?

android - GooglePlayServices Admob 问题 : "Failed to load ad : 0"

java - 刚接触数据库,我该如何设计? MySQL 和 Java

Java 即发即忘 CXF Web 服务调用 Camel 应用程序

java - 将调用接口(interface)实现的哪个对象方法

android - 使用 firebase MLKit 运行多个图像处理器

Android:服务类中的 intent.putExtra 以获取通知

java - 尝试锁定表超时;为什么会发生这种情况以及如何解决它?

java - 从本地服务器数据库到嵌入式数据库

java - 带系统错误 : Unexpected character () at position 0