Android 在RecyclerView中禁用Firebase数据库引用侦听器上的Like按钮

Android 在RecyclerView中禁用Firebase数据库引用侦听器上的Like按钮,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我的RecyclerView项目中有一个“喜欢”按钮。值是从firebase数据库引用侦听器获取的。如果“count”值为1,则该特定列表项的按钮应被禁用,并将其颜色变为绿色。代码如下: //segregate email to userID String[] emailSegregate = sharedPreferences.getString("email", "anonymous").split("@"); String emailID = emailSegregate[

我的RecyclerView项目中有一个“喜欢”按钮。值是从firebase数据库引用侦听器获取的。如果“count”值为1,则该特定列表项的按钮应被禁用,并将其颜色变为绿色。代码如下:

//segregate email to userID
    String[] emailSegregate = sharedPreferences.getString("email", "anonymous").split("@");
    String emailID = emailSegregate[0];

    //Check username has liked the post already or not
    mMessagesDatabaseReferenceCheck
            .child(emailID)
            .child(objectFile.getnodeId())
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    int b = 0;
                    check_counter objCheck = dataSnapshot.getValue(check_counter.class);
                    b = objCheck.getCount();
                    if (dataSnapshot.getChildrenCount() > 0) { // TODO: write this condition
                        //make it green
                        btnLike.setTypeface(null, Typeface.BOLD);
                        btnLike.setTextColor(Color.parseColor("#006400"));
                        btnLike.setEnabled(false);
                    }
                    else {}
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                }
            });
以下是数据库:

无法从数据库中获取一个数据,如果条件相同,则无法禁用该特定nodeId列表项的按钮

已编辑

以下是例外情况-

E/AndroidRuntime: FATAL EXCEPTION: main
  Process: com.example.abhin.myapplication, PID: 13674
  java.lang.NullPointerException: Attempt to invoke virtual method 'int com.example.abhin.myapplication.check_counter.getCounter()' on a null object reference
      at com.example.abhin.myapplication.postAdapter$2.onDataChange(postAdapter.java:148)
      at com.google.firebase.database.zzp.onDataChange(Unknown Source)
      at com.google.android.gms.internal.firebase_database.zzfc.zza(Unknown Source)
      at com.google.android.gms.internal.firebase_database.zzgx.zzdr(Unknown Source)
      at com.google.android.gms.internal.firebase_database.zzhd.run(Unknown Source)
      at android.os.Handler.handleCallback(Handler.java:739)
      at android.os.Handler.dispatchMessage(Handler.java:95)
      at android.os.Looper.loop(Looper.java:148)
      at android.app.ActivityThread.main(ActivityThread.java:5539)
      at java.lang.reflect.Method.invoke(Native Method)
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

我想你在找这样的东西:

public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    long count = dataSnapshot.child("count").getValue(Long.class);
    if (count > 0) {
        ...

为什么不使用b变量:如果(b==1){//disable button}@Mr.O:Hi Mr.O,b值保持为0:(您确定objectFile.getnodeId()在数据库的屏幕截图中返回id吗?嗨,Frank,不是。相反,它会抛出此错误-java.lang.NullPointerException:尝试调用虚拟方法'long java.lang.long.longValue()'在空对象引用上,这似乎与我共享的代码不太可能。您可以编辑您的问题以包含该异常的完整堆栈跟踪吗?添加了该异常。据我所知,我共享的代码不会引发该异常。
postAdapter.java:148
?我还强烈建议您学习,因为它将帮助您解决此问题这和未来类似的问题。当然,弗兰克。总是准备好学习和变得更好。我会读这些东西。