java - 无法使用 FirbaseUI 和 Cloud Firestore 访问 Recyclerview 位置

标签 java android firebase google-cloud-firestore firebaseui

我正在将应用程序从 Firebase 数据库迁移到 Firebase Cloud Firestore。

之前,我使用 FirebaseUI 作为实时数据库。初始化所有选项并在实时数据库中创建适配器后,我在 RecyclerView 的 View 上调用 .setOnClickListener() 以导航到新 Activity :

holder.mView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent toClickedPoll = new Intent(getActivity(), PollHostActivity.class);
                        toClickedPoll.putExtra("POLL_ID", mFireAdapter.getRef(holder.getAdapterPosition()).getKey());
                        startActivity(toClickedPoll);

                    }
                });

我传递的额外内容是 Firebase 实时数据库中位置的键。

我正在尝试通过 Cloud Firestore 的 FirebaseUI 访问相同的“ key ”。下面是我的代码:

  mFirestoreAdaper = new FirestoreRecyclerAdapter<Poll, PollHolder>(storeOptions) {
            @Override
            protected void onBindViewHolder(@NonNull final PollHolder holder, int position, @NonNull Poll model) {
                holder.mPollQuestion.setText(model.getQuestion());
                String voteCount = String.valueOf(model.getVote_count());
                //TODO: Investigate formatting of vote count for thousands
                holder.mVoteCount.setText(voteCount);
                Picasso.with(getActivity().getApplicationContext())
                        .load(model.getImage_URL())
                        .fit()
                        .into(holder.mPollImage);
                holder.mView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        Intent toClickedPoll = new Intent(getActivity(), PollHostActivity.class);
                        String position = String.valueOf(mFirestoreAdaper.getItemId(holder.getAdapterPosition()));
                        Log.v("Firestore ID", position);
                        toClickedPoll.putExtra("POLL_ID", position);
                        startActivity(toClickedPoll);

                    }
                });
            }

现在,位置变量(我已记录)返回 -1。我本质上希望它返回下面的投票文档:

enter image description here

最佳答案

试试这个:

   String positions = getSnapshots().getSnapshot(position).getId();
   Log.v("Firestore ID", positions);
   toClickedPoll.putExtra("POLL_ID", positions);

而不是这个:

    String position = String.valueOf(mFirestoreAdaper.getItemId(holder.getAdapterPosition()));
                    Log.v("Firestore ID", position);
                    toClickedPoll.putExtra("POLL_ID", position);

关于java - 无法使用 FirbaseUI 和 Cloud Firestore 访问 Recyclerview 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48725643/

相关文章:

java - 应用程序在后台时推送通知的自定义布局出现问题

angular - 使用 firebase 在应用程序中路由无法正常工作

javascript - 刷新 vue.js 应用程序,无需硬重新加载

java - 在java中使用关键字 "this"

java - 通过 JPA TransactionTemplate 执行长期运行查询时连接关闭

Java try-catch-finally 作用域,确定变量是否被使用

Java多线程渲染,如何优化

android - 如何在 Android 中找出浏览器的用户代理

java - 在 Android 中删除或清除 SimpleAdapter 中的内容?

java - 如何自动从 Firebase 中删除?