在我的应用中,注册用户可以成功发表评论。现在在我的代码中,我做了一个检查。如果特定新闻标题有注释,则填充回收的视图。如果没有,则显示文本视图,表示没有发布评论。但是,只显示一条评论而不是总计。
这是我正在谈论的检查。
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
谢谢,
西奥。
答案 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"