Android 从firebase数据库填充textView

Android 从firebase数据库填充textView,android,json,firebase,textview,firebase-realtime-database,Android,Json,Firebase,Textview,Firebase Realtime Database,我正在尝试从firebase数据库填充TextView。下面是示例json文件 { "Player" : { "Club" : "Valley Rovers", "Name" : "John Murphy" } } 以下是我的android代码: public class MainActivity extends AppCompatActivity { private TextView mPlayer; private DatabaseReference mDatabase;

我正在尝试从firebase数据库填充TextView。下面是示例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。

您的代码中会两次出现子“name”(导致Player/name/name)。将其从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(新的ValueEventListener()
除非您只想获取“Name”子级。还请记住对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);
    }