[英]Populate textView from firebase database
我试图从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”(导致播放器/名称/名称)。 从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.child("Name").addValueEventListener(new 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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.