我正在尝试从数据库检索数据并将其显示在活动中。数据是从数据库中检索出来的,其父级对应于先前单击的RecyclerView的位置。使用ValueEventListener检索数据时,表明变量为空。
我正在使用意图将RecyclerView的位置发送到其他活动,以便它能够从单击的RecyclerView的子级中检索数据。
public void changeData(){
final Intent intent = getIntent();
Log.v("Locationsdsa", intent.getStringExtra("EXTRA_LOCATION"));
Log.v("LocationsdsaLOLOL", intent.getStringExtra("EXTRA_POSITION"));
DatabaseReference db = FirebaseDatabase.getInstance().getReference("Data");
db.child(intent.getStringExtra("EXTRA_LOCATION")).child(intent.getStringExtra("EXTRA_POSITION")).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
placeName = dataSnapshot.child("nameResto").getValue(String.class);
String restoAddress = dataSnapshot.child("restoAddress").getValue(String.class);
String restoReview = dataSnapshot.child("restoReviews").getValue(String.class);
String imgUrl = dataSnapshot.child("restoThumbnail").getValue(String.class);
langitude = dataSnapshot.child("restoLangitude").getValue(Double.class);
longitude = dataSnapshot.child("restoLongitude").getValue(Double.class);
Log.v("langitude", String.valueOf(langitude));
Log.v("longitude", String.valueOf(longitude));
Log.v("name", placeName);
Log.v("restoaddress", restoAddress);
Log.v("reviewresto", restoReview);
tvPlace.setText(placeName);
tvAddress.setText(restoAddress);
tvRating.setText(restoReview);
Picasso.get().load(imgUrl).resize(200, 200).centerInside().into(ivPlace);
}
我希望可以使用ValueEventListener检索数据
答案 0 :(得分:1)
以下是用户经常错过的一些事情:
缺少Firebase规则,默认为阻止
忘记下载google-services.json
键名与代码中的拼写错误
元帅Java pojo的方法声明错误或缺少set方法
经常被忽略的另一件事是,如果离线功能启用,例如:
FirebaseDatabase.getInstance()。setPersistenceEnabled(true);
在调试应用程序时,人们可能会忘记Firebase中更改的数据需要先传播到设备,然后设备才能对更改做出反应。这似乎是在发生,但是如果互联网不畅或其他实习生来了,可能会发生奇怪的事情,使您立即不知道
就像@AlexMamo的Firebase offline capabilities causing memory problems答案一样,讨论也会显示出来。
如果遇到勒索,可以随时卸载应用程序以发布应用程序数据库的本地持久版本。