firebase ValueEventListener / onDataChange извлекает из базы данных только последний дочерний узел в обзоре firebase recycler и игнорирует остальные - PullRequest
0 голосов
/ 25 января 2019

У меня есть узел огня по имени myHire, у которого есть дочерний элемент, который идентифицируется текущим идентификатором пользователя (кто бы ни вошел в систему). Дочерний элемент ниже текущего идентификатора пользователя - это PostNode, который может быть любым и ниже. postnode - это идентификатор всех тех людей, которые взаимодействуют с этой записью. идентификатор postnode и идентификатор peopleInvolvedNode в postnode не известны мне по какому-то определенному идентификатору, поэтому я пытаюсь получить их ключи и значения с помощью цикла ValueEventListener / onDataChange. Моя проблема возникает, когда цикл извлекает только последний дочерний узел и игнорирует все узлы, которые находятся выше.

Я пытаюсь решить эту проблему очень долго. Так что любая помощь будет оценена Спасибо и хорошего дня

Это моя структура базы данных, чтобы помочь понять вопрос точно

enter image description here

Ниже мой код

 myHire = FirebaseDatabase.getInstance().getReference().child("My Hire").child(currentUserID);


myHire.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot child1 : dataSnapshot.getChildren()) {

               String checkKeys1 = child1.getKey();


                    Query query = myHire.child(checkKeys1);


                    FirebaseRecyclerOptions<hiredListDetails> options = new FirebaseRecyclerOptions.Builder<hiredListDetails>()
                            .setQuery(query, hiredListDetails.class).build();


                    final FirebaseRecyclerAdapter<hiredListDetails, MyViewHolder> adapter =
                            new FirebaseRecyclerAdapter<hiredListDetails, MyViewHolder>(options) {
                                @Override
                                protected void onBindViewHolder(@NonNull final MyViewHolder holder, int position, @NonNull final hiredListDetails model) {


                                    Log.d(TAG, "onBindViewHolder: call 4");
                                    holder.topic.setText(model.getWorktitle());


                                    Log.d(TAG, "onBindViewHolder: the topic is "+model.getWorktitle());




                                    holder.hiredPersonName.setText(model.getHiredpersonname());
                                    holder.hiredPersonBidPrice.setText(model.getHiredpersonprice() + " BD");

                                    String givenDateString = model.getCurrentdateandtime();
                                    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy, HH:mm");
                                    sdf.setTimeZone(TimeZone.getTimeZone("Asia/Bahrain"));

                                    long timeInMilliseconds = 0;

                                    try {
                                        Date mDate = sdf.parse(givenDateString);
                                        timeInMilliseconds = mDate.getTime();
                                    } catch (ParseException e) {
                                        e.printStackTrace();
                                    }


                                    final CharSequence ch = DateUtils.getRelativeTimeSpanString(timeInMilliseconds, System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS);

                                    holder.timeAgo.setText(ch);

                                    Picasso.get().load(model.getHiredpersonimage()).placeholder(R.drawable.profile)
                                            .into(holder.hiredPersonPic);


                                    holder.requestTracker.setOnClickListener(new View.OnClickListener() {
                                        @Override
                                        public void onClick(View v) {

                                            String clickedRecyclerKey = getRef(holder.getAdapterPosition()).getKey();
                                            Log.d(TAG, "onClick: clicked Recycler key is " + clickedRecyclerKey);
                                            String checkStatusForTracking = model.getActivatelocation();
                                            if (checkStatusForTracking.equalsIgnoreCase("True")) {

                                                Intent intent = new Intent(getContext(), TrackUserMap.class);
                                                startActivity(intent);


                                            } else {
                                                getLocationRequest(clickedRecyclerKey);
                                                Toast.makeText(getContext(), "Please wait while the tracking process is completed",
                                                        Toast.LENGTH_LONG).show();
                                            }


                                        }
                                    });

                                    String checkStatusForTracking = model.getActivatelocation();
                                    if (checkStatusForTracking.equalsIgnoreCase("Request")) {
                                        holder.requestTrackerStatusMark.setImageDrawable(getResources().getDrawable(R.drawable.statusyellow));
                                    } else if (checkStatusForTracking.equalsIgnoreCase("True")) {
                                        holder.requestTrackerStatusMark.setImageDrawable(getResources().getDrawable(R.drawable.statusgreen));
                                    }


                                    loadingBar.dismiss();


                                }

                                @NonNull
                                @Override
                                public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                                    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.hired_individual_row_layout, parent, false);
                                    MyViewHolder viewHolder = new MyViewHolder(view);
                                    return viewHolder;
                                }
                            };
                    myHiredList.setAdapter(adapter);
                    adapter.startListening();






            }

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...