I have a problem with Firebase eventListeners. I am trying to get some data from a Firebase database but I cannot get results back. The problem is that my listeners are not running or giving results back. I have tried getting results with 2 different listeners (onGetDataListener, ValueEventListener). During debug the whole listener gets skipped and the debugger moves forward. I have added Log.d on all listener stages but none gets accessed.
public class Suggestionsfragment extends Fragment implements AdapterView.OnItemClickListener {
private GooglePlaceList nearby;
LinearLayout linearLayout;
Double latitude;
Double longitude;
List<String> urlList;
private List<String> interestList;
private List<Double> latlong;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.suggestions, container, false);
linearLayout = (LinearLayout) v.findViewById(R.id.main_layout);
String placesKey = this.getResources().getString(R.string.places_key);
interestList = new ArrayList<>();
latlong = new ArrayList<>();
nearby = null;
FirebaseAuth firebaseAuth = FirebaseAuth.getInstance();
FirebaseUser user = firebaseAuth.getCurrentUser();
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference();
if (user != null) {
DatabaseReference ref1 = databaseReference.child(user.getUid()).child("interest");
readData(ref1, new OnGetDataListener() {
@Override
public void onSuccess(DataSnapshot dataSnapshot) {
Log.d("ONSUCCESS", "Success");
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
String interests = postSnapshot.getValue(String.class);
interestList.add(interests);
}
}
@Override
public void onStart() {
//whatever you need to do onStart
Log.d("ONSTART", "Started");
}
@Override
public void onFailure() {
Log.d("ONFAILURE", "Failure");
}
});
databaseReference.child(user.getUid());
databaseReference.child("location");
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d("ONDATACHANGED", "listener2 entered");
try {
if (dataSnapshot.getValue() != null) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
Double loc = postSnapshot.getValue(Double.class);
latlong.add(loc);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
latitude = latlong.get(0);
longitude = latlong.get(1);
int radius = 500;
urlList = generateUrlList(interestList, longitude, latitude, radius, placesKey);
if (placesKey.equals("PUT YOUR KEY HERE"))
Toast.makeText(getActivity(), "You haven't entered your Google Places Key into the strings file. Dont forget to set a referer too.", Toast.LENGTH_LONG).show();
else {
PlacesReadFeed process = new PlacesReadFeed();
process.execute(urlList);
}
return v;
}
...
}