检查值是否为空

时间:2018-05-24 10:50:08

标签: android firebase firebase-realtime-database

在我的应用中,注册用户成功添加了对文章的评论。

例如,请参阅此屏幕截图。

enter image description here

现在我想在recyclerview中阅读并显示这些评论。在此之前,我想检查特定文章是否有评论。如果没有,那么我应该看一个texview,说没有对该特定文章的评论。这条新闻(我从Google News Api获得)没有id,所以我使用了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) {

        }
    });


  }
}

然而,我总是得到即使是有评论的文章也没有发表评论。怎样才能做出一个好的查询来检查是否有评论?

谢谢,

西奥。

1 个答案:

答案 0 :(得分:2)

您需要查询中文章的orderByChild('newsTitle')。修复如下:

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

上述代码将与您提供的newsTitle字段匹配。

您的代码尝试进行查询但未定义条件。