Раздуйте макет с вложенным RecyclerView, который нужно снова накачать - PullRequest
0 голосов
/ 22 ноября 2018

У меня есть первоначальное представление переработчика для комментариев, которое я могу извлечь из базы данных Firebase, надувая макет.Раздутый макет имеет еще одно представление о ответах на комментарии.В настоящее время я могу успешно сохранять ответы на комментарии, а также в базе данных.Моя проблема заключается в том, как я могу получить ответы на комментарии в представлении реселлера (разметка комментариев).Вторичное представление для ответов находится внутри первого начального раздутого макета для комментариев ..

Это изображение в повторном обзоре предназначено для комментариев

это раздутое расположениедля комментариев с видом переработчика для ответов

это предполагаемая раздутая схема, которую следует раздуть для ответов

Структура базы данных

Ниже мой код

 @Override
protected void onCreate(Bundle savedInstanceState) {
 firebaseAuth = FirebaseAuth.getInstance();
    currentUserID = firebaseAuth.getCurrentUser().getUid();
    UserBids = FirebaseDatabase.getInstance().getReference().child("All Bids");
    UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");


    CommentsRecyclerview = findViewById(R.id.Comments_recycler_view);
    CommentsRecyclerview.setHasFixedSize(true);
    CommentsRecyclerview.setNestedScrollingEnabled(false);
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);

    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);
    CommentsRecyclerview.setLayoutManager(linearLayoutManager);

@Override
protected void onResume() {
    super.onResume();


    WorkingDataForDisplayingDetails.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                Object userid = dataSnapshot.child("currentUserid").getValue();
                if (userid != null) {
                    postedUserID = userid.toString();


                    Query query = UserBids.child("Comments").child(PostKey).child(postedUserID);
                    FirebaseRecyclerOptions<Comments> options = new FirebaseRecyclerOptions.Builder<Comments>()
                            .setQuery(query, Comments.class)
                            .build();

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

                            UserBids.child(PostKey).child(postedUserID).addValueEventListener(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                    if (dataSnapshot.hasChild(model.getCurrentuserid())) {
                                        holder.bidder.setText("Bidder");
                                    }
                                }

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

                                }
                            });


                            holder.name.setText(model.getUserName());
                            holder.comment.setText(model.getComment());
                            Picasso.get().load(model.getImage()).placeholder(R.drawable.profile).into(holder.userimg);

                            holder.reply.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    postKeyForReply = getRef(holder.getAdapterPosition()).getKey();

                                    Log.d(TAG, "onClick: inside reply onclick");

                                    holder.replyCommentInput.setVisibility(View.VISIBLE);
                                    holder.replyCommentSendButton.setVisibility(View.VISIBLE);

                                    holder.replyCommentInput.setFocusableInTouchMode(true);
                                    holder.replyCommentInput.requestFocus();

                                    InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                                    imm.showSoftInput(holder.replyCommentInput, InputMethodManager.SHOW_FORCED);

                                }
                            });


                            holder.replyCommentSendButton.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {
                                    String checkValidReply = holder.replyCommentInput.getText().toString();
                                    if (TextUtils.isEmpty(checkValidReply)) {
                                        Toast.makeText(AllUsersComments.this, "Please write something", Toast.LENGTH_SHORT).show();
                                    } else {

                                        final String randomKeyForReply = UserBids.push().getKey();

                                        HashMap replyMap = new HashMap();
                                        replyMap.put("currentuserid", currentUserID);
                                        replyMap.put("currentusername", saveFirstNameforReplier);
                                        replyMap.put("reply", checkValidReply);

                                        UserBids.child("Reply").child(postKeyForReply)
                                                .child(currentUserID).child(randomKeyForReply).updateChildren(replyMap)
                                                .addOnCompleteListener(new OnCompleteListener() {
                                                    @Override
                                                    public void onComplete(@NonNull Task task) {
                                                        if (task.isSuccessful()) {
                                                            Toast.makeText(AllUsersComments.this, "Comment Posted", Toast.LENGTH_SHORT).show();
                                                            holder.replyCommentInput.setText("");
                                                            SharedPreferences sharedPref =
                                                                    PreferenceManager
                                                                            .getDefaultSharedPreferences(AllUsersComments.this);
                                                            SharedPreferences.Editor editor = sharedPref.edit();

                                                            editor.putString("postkeyReply", postKeyForReply);
                                                            editor.putString("currentuserid", currentUserID);
                                                            editor.commit();

                                                        } else {
                                                            Toast.makeText(AllUsersComments.this, "An Error has occurred", Toast.LENGTH_SHORT).show();
                                                        }
                                                    }
                                                });

                                    }

                                }
                            });



                            String givenDateString = model.getDate();
                            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.commentTime.setText(ch);

                        }

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


                }
            }

        }

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

        }
    });



}


public static class MyViewHolder extends RecyclerView.ViewHolder {

    public AppCompatTextView name;
    public AppCompatTextView reply;
    public AppCompatImageView replyCommentSendButton;
    public AppCompatEditText replyCommentInput;
    public AppCompatTextView bidder;
    public AppCompatTextView comment;
    public AppCompatTextView commentTime;
    public CircleImageView userimg;

    public MyViewHolder(View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.CommentersName);
        reply = itemView.findViewById(R.id.ReplyButton);
        bidder = itemView.findViewById(R.id.checkBidder);
        comment = itemView.findViewById(R.id.CommentersComment);
        userimg = itemView.findViewById(R.id.UserImageInComment);
        commentTime = itemView.findViewById(R.id.commentTimeAgo);
        replyCommentSendButton = itemView.findViewById(R.id.replyCommentButton);
        replyCommentInput = itemView.findViewById(R.id.replyCommentInputInReply);


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