2017-02-28 63 views
3

我想從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將與約翰·墨菲填充。

回答

3

您的代碼(導致播放器/名稱/名稱)得到兩次孩子「姓名」。從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