从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); 
    } 
+1

谢谢你,这个伎俩! – user2387962