заполнить 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.

616   1  

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

    Ничего не найдено.