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