【问题标题】:Cannot Access Recyclerview Position Using FirbaseUI with Cloud Firestore无法通过 Cloud Firestore 使用 FirbaseUI 访问 Recyclerview 位置
【发布时间】:2018-07-21 09:26:27
【问题描述】:

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

以前,我将 FirebaseUI 用于实时数据库。在初始化所有选项并在实时数据库中创建适配器后,我在 RecyclerView 的视图上调用了 .setOnClickListener() 以导航到新活动:

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 访问相同的“密钥”。以下是我的代码:

  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。我本质上希望它返回下面的投票文档:

【问题讨论】:

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


    【解决方案1】:

    试试这个:

       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);
    

    【讨论】:

    • 像魅力一样工作,非常感谢!
    猜你喜欢
    • 2020-04-26
    • 2018-09-15
    • 2020-02-01
    • 2022-01-16
    • 2019-02-07
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多