[英]how can I store the data snapshot of a eventlistner of firebase database in a string
我正在尝试将子节点的值存储在我的 firebase 项目的字符串中。 但是当我从 scope 中取出 go 时,数据不再存储。 请帮助我.. 我正在附加代码片段,我想将位置字符串存储到 eventlistener 之外的另一个字符串中。
private RecyclerView findFriendList;
private EditText searchET;
private String str = "";
private DatabaseReference usersRef;
private DatabaseReference userlocationRef;
private String address ="" ;
private String locationDb ="";
private TextView getlocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_find_electrician);
getlocation =findViewById(R.id.get_location_electrician);
userlocationRef = FirebaseDatabase.getInstance().getReference("Users");
userlocationRef.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
if(dataSnapshot.exists())
{
String location = dataSnapshot.child("location").getValue().toString();
locationDb = location;
address =locationDb;
getlocation.setText(address);
Toast.makeText(FindElectricianActivity.this, address, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
// Toast.makeText(this, address, Toast.LENGTH_SHORT).show();
address = getlocation.getText().toString();
usersRef = FirebaseDatabase.getInstance().getReference().child("Location").child(address).child("ServiceProvider").child("Electrician");
FirebaseRecyclerOptions<Contacts> options = null;
searchET = findViewById(R.id.search_user_text_electrician);
findFriendList = findViewById(R.id.find_friends_list_electrician);
findFriendList.setLayoutManager(new LinearLayoutManager(getApplicationContext()));
searchET.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charseq, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence charseq, int start, int before, int count) {
if (searchET.getText().toString().equals("")) {
Toast.makeText(FindElectricianActivity.this, "please write name to search", Toast.LENGTH_SHORT).show();
} else {
str = charseq.toString();
onStart();
}
}
@Override
public void afterTextChanged(Editable charseq) {
}
});
}
在这里,我想将位置字符串存储到地址字符串中。 只要我在 addValuEventListner 中存在,它就会存储。 但在外面它变成了 null。 我添加了 Toast 消息来验证它。 所以请帮帮我
Firebase API 是异步的,并在任何数据可用之前立即返回。 在调用回调之前,不会分配 class 成员中的数据。 在此之前,它们将只是 null。 在调用回调之前,您有责任仅访问这些成员变量。 这意味着您可能应该只在回调或它们调用的其他方法中执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.