I am new in this ! Please can someone help me. I know that here I am dealing with asynchronous programming, I am trying to return the String but it still returning null.
Can someone tell me where I am wrong.
public interface OnGetDataListener {
public void onStart();
public void onSuccess(DataSnapshot data);
public void onFailed(DatabaseError databaseError);
}
public void mReadDataOnce(String email ,String child, final OnGetDataListener listener) {
listener.onStart();
myRef.child(email).child(child).limitToFirst(1).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
listener.onSuccess(dataSnapshot);
}
@Override
public void onCancelled(DatabaseError databaseError) {
listener.onFailed(databaseError);
}
});
}
private String mCheckInforInServer(String email ,String child) {
final String[] returnvalue = new String[1];
mReadDataOnce(email ,child, new OnGetDataListener() {
@Override
public void onStart() {
//DO SOME THING WHEN START GET DATA HERE
}
@Override
public void onSuccess(DataSnapshot data) {
returnvalue[0] = data.getValue().toString();
//DO SOME THING WHEN GET DATA SUCCESS HERE
}
@Override
public void onFailed(DatabaseError databaseError) {
//DO SOME THING WHEN GET DATA FAILED HERE
}
});
return returnvalue[0] ;
}
Then I am calling it:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.i(" ","HIMANSHU" + mCheckInforInServer("a","name"));
Log.i(" ","HIMANSHU" + mCheckInforInServer("a","email"));
}
Log is printing null, I want the values. Please help!