喜欢/不喜欢使用Firebase数据库的系统

时间:2017-08-29 19:10:52

标签: android firebase firebase-realtime-database

我想创建两个按钮,一个用于喜欢,另一个用于不喜欢。

我写这个:

mDatabaseLikeReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (clickLike) {

                if (dataSnapshot.hasChild(mFirebaseUser.getUid())) {

     mDatabaseRateMinsReference.child(mFirebaseUser.getUid()).removeValue();

                    clickLike= false;
                } else {
                    mDatabaseRateMinsReference.child(mFirebaseUser.getUid()).setValue(mFirebaseUser.getDisplayName());

                    clickLike= false;
                }


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

        }

这是一个按钮的工作,如果用户点击像按钮,然后不喜欢按钮,如何从数据库中删除,反之亦然?谢谢。

1 个答案:

答案 0 :(得分:0)

为您的按钮实施onClickListener,并在onClick(View view)执行此操作:

// based on what button clicked, you can also check if button is enabled.
if(view.getid()== R.id.unlikeButton){
    mDatabaseLikeReference.removeValue();
}
else if (view.getid()== R.id.likedButton)
    mDatabaseLikeReference.setValue(mFirebaseUser.getDisplayName());

然后在您的数据库值事件侦听器中:

mDatabaseLikeReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()) {
                mDatabaseRateMinsReference
                    .child(mFirebaseUser.getUid())
                    .setValue(mFirebaseUser.getDisplayName());
                    likedbutton.setVisibility(VISIBLE);
                    unlikebutton.setVisibility(GONE);
            }
            else{
                 mDatabaseRateMinsReference
                     .child(mFirebaseUser.getUid())
                     .removeValue();
                    // enable/disable or change visibility or change color
                    likedbutton.setVisibility(GONE);
                    unlikebutton.setVisibility(VISIBLE);
                    } 

                 } @Override
            public void onCancelled(DatabaseError databaseError) {

            }