Android 在RecyclerView中禁用Firebase数据库引用侦听器上的Like按钮
我的RecyclerView项目中有一个“喜欢”按钮。值是从firebase数据库引用侦听器获取的。如果“count”值为1,则该特定列表项的按钮应被禁用,并将其颜色变为绿色。代码如下: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[
//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
?我还强烈建议您学习,因为它将帮助您解决此问题这和未来类似的问题。当然,弗兰克。总是准备好学习和变得更好。我会读这些东西。