【问题标题】:Firestore into recyclerview using FirebaseUI, no data displayedFirestore使用FirebaseUI进入recyclerview,没有显示数据
【发布时间】:2018-03-20 19:52:32
【问题描述】:

我刚开始使用 Firestore。所以我尝试将我的数据直接拟合到recyclerview中,这是我用作参考的code。 这是我的 UserRecyclerView 片段:

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字段来检查它以确保(现在已删除)。我希望你帮我写代码。应该是适配器的原因吧?帮我弄清楚。我还上传了我的数据库的 sn-p。 提前致谢!

【问题讨论】:

  • 对于未来的访问者,您可以查看 here,其中我已经逐步解释了如何使用 Android 将 Firestore 中的数据显示到 RecyclerView

标签: firebase android-recyclerview firebaseui google-cloud-firestore


【解决方案1】:

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

@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

【讨论】:

  • 或者我们可以保留 .setLifecycleOwner(getViewLifecycleOwner()) 同时初始化 FirestoreRecyclerOptions 对象也会开始监听
【解决方案2】:

如下创建recyclerview:

FirestoreRecyclerAdapter adapter = getFirestoreRecyclerAdapter();
//add below line
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setAdapter(adapter);
mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    相关资源
    最近更新 更多