[英]Fetching data from firebase taking more than one button click to display
我想显示每当用户单击按钮时从firebase提取的数据。 这是我目前正在使用的代码
todayPoem = (TextView) findViewById(R.id.todpoem);
/*Firebase related code*/
myFirebaseRef = new Firebase("https://firebase url");
myFirebaseRef.child("poem").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot snapshot) {
System.out.println(snapshot.getValue());
s1 = (String) snapshot.getValue();
}
@Override
public void onCancelled(FirebaseError error) {
}
});
}
public void onClickPoem(View v) {
todayPoem.setTextSize(20);
todayPoem.setText(s1);
}
xml文件包含一个textview和一个从Firebase中获取数据的按钮。 但是问题是,每当我单击按钮时,数据都不会立即显示,通常需要将近5-6次按钮单击才能显示数据。 我在这里做错了什么?
我之前遇到过这个问题...我建议您像下面的示例那样做:
mrf.setAndroidContext(this);
mrf = new Firebase('Firebase url');
final Firebase myData = mrf.child("info");
myData.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(final DataSnapshot dataSnapshot) {
x1 = dataSnapshot.getValue(String.class);
x2 = x1; // Global variable
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
使用变量“ x2”执行您想要的操作。 我不为什么,但是使用用于从Firebase接收数据的相同变量存在一些问题。
希望它与您合作...
另外,如果您希望用户知道正在检索数据,则可以将proc与Bar一起使用。 单击一个按钮并且'x1'等于null后,请执行以下操作: progressBar.setVisibility(View.VISIBLE);
然后
handler.postDelayed(new Runnable() {
public void run() {
progressBar.setVisibility(View.GONE);
t.setText(x2);
}
}, 800);
祝好运..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.