Firebase回收器视图不显示任何内容 [英] Firebase Recycler View don't show anything

查看:58
本文介绍了Firebase回收器视图不显示任何内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好! 首先,我必须告诉我已经展示了许多有关Firebase的文档,并花了很多时间在Stack上的现有主题上.

Hello! At the beginning I must tell that I've shown many documentations about Firebase and spent a lot of time on existing topics on Stack.

开始吧.我正在通过聊天(称为响应)(包括Firebase实施)为汽车用户创建应用. 现在,我正在努力使用recyclerView显示用户列表. 在firebase中,我有数据库用户". 使用我的代码后,我的活动空白,没有任何用户.

Let's begin. I'm creating app for car users with chat (Called Response) including Firebase implementation. Now I'm struggling with showing list of users using recyclerView. In firebase I have database "Users". After using my code I have blank activity without anyone user.

在"com.firebaseui:firebase-ui-database:2.4.0"(带有populateViewHolder)中,我的活动正常. 有人知道我的代码有什么问题吗? 感谢您的答复:)

In 'com.firebaseui:firebase-ui-database:2.4.0' (with populateViewHolder) my acitivity works fine. Is anybody know what's wrong with my code? Thanks for any reply :)

这是我的活动

public class ResponseAllUsersActivity extends AppCompatActivity {

private Toolbar mToolbar;
private RecyclerView allUsersList;
private DatabaseReference allDatabaseUserreference;

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

    mToolbar = (Toolbar) findViewById(R.id.all_users_app_bar);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setTitle("All Users");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    allUsersList = (RecyclerView) findViewById(R.id.all_users_list);
    allUsersList.setHasFixedSize(true);
    allUsersList.setLayoutManager(new LinearLayoutManager(this));

    allDatabaseUserreference = FirebaseDatabase.getInstance().getReference().child("Users");

}

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

    Query query = FirebaseDatabase.getInstance()
            .getReference()
            .child("Users");

    FirebaseRecyclerOptions<Response_AllUsers> options =
            new FirebaseRecyclerOptions.Builder<Response_AllUsers>()
                    .setQuery(query, Response_AllUsers.class)
                    .build();

    FirebaseRecyclerAdapter<Response_AllUsers, AllUsersViewHolder> firebaseRecyclerAdapter
            = new FirebaseRecyclerAdapter<Response_AllUsers, AllUsersViewHolder>
            (options)
    {
        @Override
        protected void onBindViewHolder(@NonNull AllUsersViewHolder holder, int position, @NonNull Response_AllUsers model)
        {
            holder.setUser_name(model.getUser_name());
            holder.setUser_status(model.getUser_status());
            holder.setUser_image(getApplicationContext(), model.getUser_image());
        }

        @NonNull
        @Override
        public AllUsersViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.response_users_display_layout,parent,false);
            return new AllUsersViewHolder(view);
        }


    };
    allUsersList.setAdapter(firebaseRecyclerAdapter);
}
public static class AllUsersViewHolder extends RecyclerView.ViewHolder
{
    View mView;
   public AllUsersViewHolder(View itemView)
   {
       super(itemView);

       mView = itemView;
   }
   public void setUser_name(String user_name)
   {
       TextView name = (TextView) mView.findViewById(R.id.all_users_username);
       name.setText(user_name);
   }

   public void setUser_status(String user_status)
   {
       TextView status = (TextView) mView.findViewById(R.id.all_users_status);
       status.setText(user_status);
   }
   public void setUser_image(Context ctx, String user_image)
   {
       CircleImageView image = (CircleImageView) mView.findViewById(R.id.all_users_profile_image);

       Picasso.with(ctx).load(user_image).into(image);
   }
}
}

Response_AllUsers:

Response_AllUsers:

public class Response_AllUsers {
public String user_name;
public String user_image;
public String user_status;

public Response_AllUsers()
{

}

public Response_AllUsers(String user_name, String user_image, String user_status) {
    this.user_name = user_name;
    this.user_image = user_image;
    this.user_status = user_status;
}

public String getUser_name() {
    return user_name;
}

public void setUser_name(String user_name) {
    this.user_name = user_name;
}

public String getUser_image() {
    return user_image;
}

public void setUser_image(String user_image) {
    this.user_image = user_image;
}

public String getUser_status() {
    return user_status;
}

public void setUser_status(String user_status) {
    this.user_status = user_status;
}
}

推荐答案

您正在使用Firebaseui的新版本,然后在onStart()内添加以下内容:

You are using a new version of Firebaseui, then inside onStart() you need to add the following:

 firebaseRecyclerAdapter.startListening();

开始监听数据

,然后在onStop()内添加:

firebaseRecyclerAdapter.stopListening();

更多信息在这里:

Firebase ui生命周期

这篇关于Firebase回收器视图不显示任何内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆