android - 从 firebase 数据库填充 textView

标签 android json firebase textview firebase-realtime-database

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

相关文章:

android - 我找不到在 Android Studios 项目 View 中显示 lint 错误的方法

c# - JSON.net(反)序列化未类型化的属性

Firebase 云函数 -@google-cloud/storage 初始化

android - android : what is different between notification and data payload 的通知

android - 是否可以在 Android 上使用 adb 在触摸屏上产生连续的滑动 Action ?

android - MvvmCross Xamarin.Android FloatingActionButton 切换可见性

java - 选择一个后裁剪图像的最佳方式

jquery - fullcalendar-无法缓存 AJAX 调用的 JSON 响应

Mysql 5.7 ERROR 3143 (42000) : Invalid JSON path expression. 错误在字符位置3附近

ios - firebase changePassword 不会因旧密码不正确而引发错误