Android 从firebase数据库填充textView
我正在尝试从firebase数据库填充TextView。下面是示例json文件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;
{
"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);
}