从Firebase检索复选框状态

时间:2018-12-03 18:39:57

标签: android android-checkbox

我有一个像这样的数据库结构: Firebasedatabase 我想获取布尔值以填充列表视图项中的另一个复选框。 当我添加新项目时,我使用复选框在Firebase中将布尔值设置为“ true或false”。但是我想获取值以填充列表视图中的另一个复选框。 这是我的适配器(在我的MainActivity内部)

win/0

2 个答案:

答案 0 :(得分:0)

您的解决方案在于Firebase数据库中提供的valueEventListener(),用于从数据库获取实时更新。

您需要根据数据库中的布尔值在要修改的列表项中添加valueEventListener()
您需要修改onDataChanged()中的valueEventListener()回调函数,该函数将根据在特定DataReference上被调用的数据库中的更改而自动调用。 当数据库中的相应值(即指向它的数据库引用)发生更改时,valueEventListener()会自动触发。触发函数后,您将执行所需的代码以将复选框设置为通过调用函数setChecked()进行检查。

看起来像这样checkboxVariable.setChecked(true)

您可能会了解有关valueEventListener()的更多信息,该功能可以在类DatabaseReference上使用。



Example from documentation on valueEventListener



希望有帮助。

答案 1 :(得分:0)

我可能会首先对该节点的所有数据执行类似的操作。在某些情况下可能会有用:

public class Data
{
   public String jobId;
   public boolean checked;
}

并使用以下代码检索我的值

 FirebaseDatabase.getInstance().getReference()
            .child("MyReference")
            .child( PROFILE_KEY )
            .addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {

                    Data data= dataSnapshot.getValue(Data.class);

                    if (consumer == null)
                    {
                        //data does not exists for the specified key
                    }
                    else if(data.checked)
                    {
                       //data is checked
                    }
                    else {
                        //data not checked
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                   // there was an error
                }
            });