使用FirebaseUI将数据存储到recyclerview中,不显示任何数据 [英] Firestore into recyclerview using FirebaseUI, no data displayed

查看:88
本文介绍了使用FirebaseUI将数据存储到recyclerview中,不显示任何数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚开始使用Firestore.因此,我尝试将数据直接拟合到recyclerview中,这是代码我用作参考. 这是我的UserRecyclerView片段:

I just got started with Firestore. So I tried fitting my data directly into a recyclerview, here's the code I used for reference. Here's my UserRecyclerView Fragment :

public class UserRecyclerView extends Fragment{
private ArrayList<User> user;
RecyclerView mRecyclerView;
public UserRecyclerView(){}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.recycler_view,container,false);
    mRecyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);

    FirestoreRecyclerAdapter adapter = getFirestoreRecyclerAdapter();
    mRecyclerView.setAdapter(adapter);
    mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

return view;
}

@NonNull
private FirestoreRecyclerAdapter getFirestoreRecyclerAdapter() {
    Query query = FirebaseFirestore.getInstance()
            .collection("users");

    FirestoreRecyclerOptions<User> options = new FirestoreRecyclerOptions.Builder<User>()
            .setQuery(query, User.class).build();

    return new FirestoreRecyclerAdapter<User, UserViewHolder>(options) {
        @Override
        protected void onBindViewHolder(UserViewHolder holder, int position, User model) {
            Log.d("USER", "DATA: "+model.getName());
            holder.BindView(position, model);

        }
        @Override
        public UserViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
           View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.users_list, parent, false);

            return new UserViewHolder(view);
        }
    };
}

private class UserViewHolder extends RecyclerView.ViewHolder{
    TextView info;
    UserViewHolder(View itemView) {
        super(itemView);
        info = (TextView) itemView.findViewById(R.id.info_text);
    }

    void BindView(int position, User model){

        info.setText(model.getName()+" , "+model.getId());
    }
} 

我的MainActivity中除了启动上面的片段之外什么都没有.我不知道我的代码有什么问题.它没有显示任何错误,当我运行该应用程序时,它不会崩溃.它只是进入recyclerview布局,我通过放置一个textview字段来确定它(现在已删除)来对其进行检查.我希望您能帮助我解决该代码.可能是因为适配器?帮我弄清楚.我还上传了数据库片段. 提前致谢!

There's nothing in my MainActivity except for starting the above fragment. I don't know what's wrong with my code. It shows no errors, when I run the app it doesn't crash. It just enters into the recyclerview layout, I checked it by placing a textview field for being sure(now removed). I want you to help me out with the code. It's probably because of the adapter? Help me figure out. I have also uploaded a snippet of my database. Thanks in advance!

推荐答案

请确保您在适配器上调用startListening以启动与Cloud Firestore的连接,否则将不会加载任何数据.

Make sure you call startListening on the adapter to initiate the connection to Cloud Firestore, otherwise no data will be loaded.

@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

请参阅: https://github.com/firebase/FirebaseUI-Android/blob/master/firestore/README.md#firestorerecycleradapter-lifecycle

这篇关于使用FirebaseUI将数据存储到recyclerview中,不显示任何数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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