Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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
FirebaseUI Android回收视图未响应POJO_Android_Json_Android Recyclerview_Firebase Realtime Database_Firebaseui - Fatal编程技术网

FirebaseUI Android回收视图未响应POJO

FirebaseUI Android回收视图未响应POJO,android,json,android-recyclerview,firebase-realtime-database,firebaseui,Android,Json,Android Recyclerview,Firebase Realtime Database,Firebaseui,我的Android FirebaseUI回收器视图使用字符串类数据类型响应良好。但当我使用POJO类作为数据类型时,它并没有填充视图 我已花时间确保POJO中的名称与JSON文件中的名称匹配。以下是我的代码: public class MainActivity extends AppCompatActivity { public static class MessageViewHolder extends RecyclerView.ViewHolder { TextV

我的Android FirebaseUI回收器视图使用字符串类数据类型响应良好。但当我使用POJO类作为数据类型时,它并没有填充视图

我已花时间确保POJO中的名称与JSON文件中的名称匹配。以下是我的代码:

public class MainActivity extends AppCompatActivity   {
    public static class MessageViewHolder extends RecyclerView.ViewHolder {
        TextView messageTextView;

        public   MessageViewHolder(View view) {
            super(view);
            messageTextView =(TextView) messageTextView.findViewById(android.R.id.text1);

        }

    }

    android.support.v7.widget.RecyclerView recyclerView;

    FirebaseDatabase  database = FirebaseDatabase.getInstance();

    DatabaseReference myRef = database.getReference();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onStart()
    {
        super.onStart();
        //Recycler
        recyclerView=(android.support.v7.widget.RecyclerView)findViewById(R.id.recyclerview);

        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        //Adapter
             FirebaseRecyclerAdapter<User, MessageViewHolder> mFirebaseAdapter=
                new FirebaseRecyclerAdapter<User, MessageViewHolder>(User.class,
                        R.layout.layout,
                        MessageViewHolder.class,
                        myRef.child("User")
                ) {
                    @Override
                    protected void populateViewHolder(MessageViewHolder viewHolder, User model, int position) {

                        viewHolder.messageTextView.setText(model.getName());
                    }
                };


        recyclerView.setAdapter(mFirebaseAdapter);


    }
}
来自Firebase的错误

异常com.google.firebase.database.DatabaseException:无法将java.lang.String类型的对象转换为com.projectgenuis.enenews.User类型

编辑(JSON)


FirebaseUI适配器设计用于显示项目列表,在您的情况下是用户列表。在当前数据模型中,
/user
节点下只有一个用户。这意味着无法在列表视图中显示它

解决此问题的最简单方法是将JSON更改为在
users
节点下有一个用户列表:

{
  "Users" : {
    "User1": {
      "Name" : "Zion"
    }
    "User2": {
      "Name" : "puf"
    }
  }
}
然后将适配器连接到此集合:

mFirebaseAdapter= new FirebaseRecyclerAdapter<User, MessageViewHolder>(
                    User.class,
                    R.layout.layout,
                    MessageViewHolder.class,
                    myRef.child("Users")
            ) {
mFirebaseAdapter=新的FirebaseRecyclerAdapter(
User.class,
布局,
MessageViewHolder.class,
myRef.child(“用户”)
) {

FirebaseUI适配器旨在显示项目列表,在您的情况下是用户列表。在当前数据模型中,
/user
节点下只有一个用户。这意味着无法在列表视图中显示它

解决此问题的最简单方法是将JSON更改为在
users
节点下有一个用户列表:

{
  "Users" : {
    "User1": {
      "Name" : "Zion"
    }
    "User2": {
      "Name" : "puf"
    }
  }
}
然后将适配器连接到此集合:

mFirebaseAdapter= new FirebaseRecyclerAdapter<User, MessageViewHolder>(
                    User.class,
                    R.layout.layout,
                    MessageViewHolder.class,
                    myRef.child("Users")
            ) {
mFirebaseAdapter=新的FirebaseRecyclerAdapter(
User.class,
布局,
MessageViewHolder.class,
myRef.child(“用户”)
) {

请在yoru数据库中共享
/User
节点的JSON(以文本形式,无截图)。您可以通过单击中的导出JSON链接轻松获得此信息。JSON:{“User”:{“Name”:“Zion”,}请共享JSON(以文本形式,无截图)您可以通过单击.JSON:{“User”:{“Name”:“Zion”,}中的导出JSON链接轻松获得此信息感谢您的回答,我遵照您的建议,这次应用程序因三个新错误而崩溃:
Exception java.lang.RuntimeException:java.lang.reflect.InvocationTargetException由java.lang.reflect.InvocationTargetException引起。由java.lang.NullPointerException引起:
这些都是新的错误,听起来像是您在做的g进展,这可能是一个新问题。在发布之前,请务必阅读如何排除
NullPointerException
:为了确保null指针错误不是来自我的POJO,我将适配器中的类数据类型更改为string,它仍然会因相同的错误而崩溃。我按照教程进行操作,但似乎无法解决它。我的POJO似乎很正常。
Exception java.lang.RuntimeException:java.lang.reflect.InvocationTargetException由java.lang.reflect.InvocationTargetException引起的java.lang.NullPointerException:com.projectgenuis.eneanews.MainActivity$MessageViewHolder。
我对上述代码做了一些调整,并意识到使用
String
data-type它与JSON中的调整配合得很好,比如:
{User{“name”:Zion,“gender”:“male”},}
但是POJO仍然没有响应。此外,POJO和String类都不会响应您建议的JSON结构。您的见解将受到高度重视。非常感谢。问题实际上是来自我的JSON。我从您宝贵的见解中学到了很多。我还必须重新排序POJO以反映更改,再次感谢这对我来说意义重大。感谢您的回答,我遵照您的建议,这次应用程序崩溃了,出现了三个新错误:
Exception java.lang.RuntimeException:java.lang.reflect.InvocationTargetException由java.lang.reflect引起。InvocationTargetException:由java.lang.NullPointerException引起:
,因为这些都是新的,所以它是新的看起来你正在取得进展,这可能是一个新问题。在发布之前,请务必阅读如何解决
NullPointerException
:为了确保null指针错误不是来自我的POJO,我将适配器中的类数据类型更改为string,但它仍然会因相同的错误而崩溃。我遵循了教程,但似乎无法解决找出原因。我的POJO似乎正常。
异常java.lang.RuntimeException:java.lang.reflect.InvocationTargetException由java.lang.reflect.InvocationTargetException引起。由java.lang.NullPointerException引起:com.projectgenuis.eneanews.MainActivity$MessageViewHolder。
我对前面提到的代码和实际值做了一些调整假设使用
字符串
数据类型,它可以很好地与JSON中的调整配合使用,例如:
{User{“name”:Zion,“gender”:“male”},}
但是POJO仍然没有响应。此外,POJO和String类都不会响应您建议的JSON结构。您的见解将受到高度重视。非常感谢。问题实际上是来自我的JSON。我从您宝贵的见解中学到了很多。我还必须重新排序POJO以反映更改,再次感谢这对我来说意义重大。