【问题标题】:Populate textView from firebase database从 firebase 数据库填充 textView
【发布时间】:2017-02-28 22:16:36
【问题描述】:

我正在尝试从 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。

【问题讨论】:

    标签: android json firebase textview firebase-realtime-database


    【解决方案1】:

    您的代码中出现了两次子“名称”(导致播放器/名称/名称)。从 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() 中删除子项("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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2018-09-25
      • 1970-01-01
      相关资源
      最近更新 更多