заполнить textView из базы данных firebase
Я пытаюсь заполнить TextView из базы данных firebase. Вот пример файла json.
{
"Player" : {
"Club" : "Valley Rovers",
"Name" : "John Murphy"
}
}
Вот мой код для android:
public class MainActivity extends AppCompatActivity {
private TextView mPlayer;
private DatabaseReference mDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPlayer = (TextView) findViewById(R.id.player);;
mDatabase = FirebaseDatabase.getInstance().getReference("Player").child("Name");
final String player = mDatabase.push().getKey();
mDatabase.child("Name").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Check for null
if (player == null) {
Log.e(TAG, "User data is null!");
return;
}
mPlayer.setText(player);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
Я хочу добавить имя John Murphy в базу данных firebase, и при этом TextView mPlayer будет заполняться именем John Murphy.
1 ответ:
Вы получаете дочернее "имя" дважды в своем коде (что приводит к игроку/имени/имени). Удалите его из инициализации mDatabase:
mDatabase = FirebaseDatabase.getInstance().getReference("Player");И вы никогда на самом деле не получите значение от DataSnapshot, полученного. Для этого используйте следующее:
mDatabase.child("Name").addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { String playerName = dataSnapshot.getValue(String.class); mPlayer.setText(playerName); } @Override public void onCancelled(DatabaseError databaseError) { } });Если кто-то хочет использовать POJO подход к этой проблеме в будущем, следуйте примеру ниже:
Удалить ребенка ("имя") из
mDatabase.child("Name").addValueEventListener(new ValueEventListener()если только вы не хотите получить только "имя" ребенка. Также не забудьте произвести коррекцию сделано на инициализации mDatabase.mDatabase.addValueEventListener(new ValueEventListener() { @Override public void onDataChange(DataSnapshot dataSnapshot) { // String playerName = dataSnapshot.getValue(String.class); PlayerModel playerModel = dataSnapshot.getValue(PlayerModel.class); ((TextView)findViewById(R.id.textviewName)).setText(playerModel.getName()); ((TextView)findViewById(R.id.textviewClub)).setText(playerModel.getClub()); // mPlayer.setText(playerName); }
Comments