пытался извлечь данные из firebase, когда пользователь нажимает кнопку, но данные не отображаются, если кнопка нажимается в первый раз, а затем, если я нажимаю снова, отображаются данные ... любая идея, что мне следует добавить в код, чтобы данные появляются при первой попытке щелчка ..
вот код:
btnprediksi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
efekGK();
}
});
вот метод efekGK
private void efekGK() {
final DatabaseReference CekDataGK;
posisi="GK";
CekDataGK=FirebaseDatabase.getInstance().getReference();
CekDataGK.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if (dataSnapshot.child("PlayerSkills").child(username).child("GK").exists()) {
PlayersSkill playerData = dataSnapshot.child("PlayerSkills")
.child(username)
.child("GK")
.getValue(PlayersSkill.class);
assert playerData != null;
String basGKform = playerData.getNumform();
String basGKExp=playerData.getNumexperience();
Toast.makeText(HomeActivity.this, basGKform, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
я использую Toast для проверки если данные доступны или нет. результат, когда я нажимаю кнопку, чтобы тост ничего не отображал, но когда я нажимаю снова, тост отображает данные, которые я ожидал ...
РЕДАКТИРОВАТЬ: я следую совету Алекса ios, и он отлично работает, если переменная отображается внутри метод "efekgk" ... но если я поместил его вне метода, то при первом нажатии он снова ничего не отобразит.
сначала я определяю переменную вне метода
public class HomeActivity extends AppCompatActivity {
private String basGKform, basGKExp;
.....}
, и я перемещаю результат в новый метод с именем displaydata
private void displaydata() {
Toast.makeText(HomeActivity.this, basGKform, Toast.LENGTH_SHORT).show();
}
При первом щелчке мышью ничего не происходит