我正在尝试从 firebase 数据库填充 TextView。这是示例 json 文件。
{
"Player" : {
"Club" : "Valley Rovers",
"Name" : "John Murphy"
}
}
这是我的安卓代码:
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。
最佳答案
您在代码中两次获得子“名称”(导致播放器/名称/名称)。从 mDatabase 初始化中移除它:
mDatabase = FirebaseDatabase.getInstance().getReference("Player");
而且您永远不会真正从收到的 DataSnapshot 中获得值(value)。为此,请使用:
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()
中移除 child("Name")
除非你只想获取“姓名” child 。还要记住影响对 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);
}
关于android - 从 firebase 数据库填充 textView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42519755/