在我的应用程序中,注册用户成功地添加了对文章的评论。
例如,请看这张截图。

现在我想在回收视图中阅读并显示这些评论。在此之前,我想检查一下这篇文章是否有评论。如果没有,那么我应该使文本视图可见,说没有评论该特定的文章。新闻(我从Google获得)没有ids,所以我使用newsTitle,如图所示。
这是我写的代码。
public class DisplayComments extends AppCompatActivity {
ArrayList<Comment> commentArrayList;
Toolbar mToolbar;
private DatabaseReference mDatabase;
private Intent i;
private String newsTitle;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_comments);
mToolbar = (Toolbar) findViewById(R.id.display_comments_app_bar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle("Display Comments");
mDatabase = FirebaseDatabase.getInstance().getReference();
commentArrayList = new ArrayList<>();
i = getIntent();
newsTitle = i.getStringExtra("newsTitle");
mDatabase = FirebaseDatabase.getInstance().getReference();
String userId = FirebaseAuth.getInstance().getCurrentUser().getUid();
mDatabase = FirebaseDatabase.getInstance().getReference();
Query query = mDatabase.child("comments").child("newsTitle").equalTo(newsTitle);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
Toast.makeText(DisplayComments.this,"There are comments posted",Toast.LENGTH_LONG).show();
}else{
Toast.makeText(DisplayComments.this,"There are no comments posted",Toast.LENGTH_LONG).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
}然而,我总是了解到,即使是有评论的文章,也没有任何评论。如何做一个好的查询,检查是否有注释?
谢谢,
西奥。
发布于 2018-05-24 10:58:12
您需要查询中文章的orderByChild('newsTitle')。就这样把它修好:
Query query = mDatabase.child("comments").orderByChild("newsTitle").equalTo(newsTitle);上面的代码将与您给定值的newsTitle文件相匹配。
您的代码试图进行查询,但没有定义条件。
https://stackoverflow.com/questions/50507447
复制相似问题