2017-02-28 4 views
3

FirebaseデータベースからTextViewを読み込もうとしています。ここにサンプルのjsonファイルがあります。私はfirebaseデータベースに名前ジョン・マーフィーを追加するので、TextViewのMplayerのは、ジョン・マーフィーに移入されますやって欲しいはfirebaseデータベースからtextViewを取り込みます

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) { 

     } 
    }); 

} 

{ 
"Player" : { 
    "Club" : "Valley Rovers", 
    "Name" : "John Murphy" 
} 
} 

は、ここに私のアンドロイドコードです。

答えて

3

コードに「名前」が2回表示されています(プレーヤー/名前/名前につながります)。

mDatabase = FirebaseDatabase.getInstance().getReference("Player"); 

DataSnapshotから値を取得することは決してありません。あなたがない限りmDatabase.child("Name").addValueEventListener(new ValueEventListener() から子(「名前」)を削除し

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の初期化時に行われた修正を行うことを忘れないでください。

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

関連する問題