0

I am migrating my application from the Firebase Database to the Firebase Cloud Firestore.

Previously, I was using the FirebaseUI for the realtime database. After initializing all of my options and creating the adapter in the realtime database, I called .setOnClickListener() on a View of the RecyclerView to navigate to a new 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);

                    }
                });

The extra I passed was the key of the location in my Firebase realtime database.

I am trying to access the same "key" via the FirebaseUI for the Cloud Firestore. Below is my code:

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

                    }
                });
            }

Right now, the position variable (I have logged) is returning -1. I essentially want it to return the Poll document below:

enter image description here

Dan McGrath
  • 41,220
  • 11
  • 99
  • 130
tccpg288
  • 3,242
  • 5
  • 35
  • 80

1 Answers1

1

Try this:

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

instead of this:

    String position = String.valueOf(mFirestoreAdaper.getItemId(holder.getAdapterPosition()));
                    Log.v("Firestore ID", position);
                    toClickedPoll.putExtra("POLL_ID", position);
Peter Haddad
  • 78,874
  • 25
  • 140
  • 134