从Firebase数据库填充textView
问题描述:
我想从Firebase数据库填充TextView。这是示例json文件。从Firebase数据库填充textView
{
"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) {
}
});
}
我想的名字约翰·墨菲添加到火力数据库,这样做TextView的MPlayer将与约翰·墨菲填充。
答
您的代码(导致播放器/名称/名称)得到两次孩子“姓名”。从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);
}
谢谢你,这个伎俩! – user2387962