在recyclerview中只显示一条评论 - Firebase

时间:2018-05-25 06:05:35

标签: android firebase firebase-realtime-database

在我的应用中,注册用户可以成功发表评论。现在在我的代码中,我做了一个检查。如果特定新闻标题有注释,则填充回收的视图。如果没有,则显示文本视图,表示没有发布评论。但是,只显示一条评论而不是总计。

这是我正在谈论的检查。

Query query = mDatabase.child("comments").orderByChild("newsTitle").equalTo(newsTitle);

    query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                for(DataSnapshot dataSnapshots : dataSnapshot.getChildren()){
                    Comment comment = dataSnapshots.getValue(Comment.class);

                    //mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(userId);

                    commentArrayList.add(comment);

                    mRecyclerView.setAdapter(displayCommentsAdapter);

                    displayCommentsAdapter = new DisplayCommentsAdapter(getApplication(),commentArrayList);

                    displayCommentsAdapter.notifyDataSetChanged();

                    //displayCommentsAdapter.setCommentsData(commentArrayList);

                    Log.d(LOG_TAG, "commentArrayList size: " + String.valueOf(commentArrayList.size()));

                }
                //commentsTextView.setVisibility(View.VISIBLE);

            }else{
                //Toast.makeText(DisplayComments.this,"There are no comments posted",Toast.LENGTH_LONG).show();
                noCommentsTextView.setVisibility(View.VISIBLE);

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

 Log.d(LOG_TAG, "commentArrayList size: " + 
 String.valueOf(commentArrayList.size()));

成功返回数组列表的大小。即。 10注释ArrayList的大小是10.所以这部分是好的。

logcat也给了我另一个消息。

E/RecyclerView: No adapter attached; skipping layout

也许这必须对我当前的问题做些什么。

找到DisplayComments活动here

我的适配器代码here

single_comment_row.xml是here

谢谢,

西奥。

1 个答案:

答案 0 :(得分:1)

您需要在环路外设置适配器

 query.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        if(dataSnapshot.exists()){
            for(DataSnapshot dataSnapshots : dataSnapshot.getChildren()){
                Comment comment = dataSnapshots.getValue(Comment.class);

                //mUserDatabase = FirebaseDatabase.getInstance().getReference().child("Users").child(userId);

                commentArrayList.add(comment);



                //displayCommentsAdapter.setCommentsData(commentArrayList);

                Log.d(LOG_TAG, "commentArrayList size: " + String.valueOf(commentArrayList.size()));

            }

            mRecyclerView.setAdapter(displayCommentsAdapter);

            displayCommentsAdapter = new DisplayCommentsAdapter(getApplication(),commentArrayList);

            displayCommentsAdapter.notifyDataSetChanged();
            //commentsTextView.setVisibility(View.VISIBLE);

        }else{
            //Toast.makeText(DisplayComments.this,"There are no comments posted",Toast.LENGTH_LONG).show();
            noCommentsTextView.setVisibility(View.VISIBLE);

        }

修改

ConstraintLayout的高度更改为 android:layout_height="wrap_content"