从firebase获取数据需要多个按钮才能显示

时间:2016-06-11 09:51:13

标签: java android

我想显示用户点击按钮时从firebase获取的数据。这是我目前使用的代码

todayPoem = (TextView) findViewById(R.id.todpoem);

/*Firebase related code*/
        myFirebaseRef = new Firebase("https://firebase url");

        myFirebaseRef.child("poem").addValueEventListener(new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot snapshot) {
                System.out.println(snapshot.getValue());
                s1 = (String) snapshot.getValue();
            }

            @Override
            public void onCancelled(FirebaseError error) {
            }


        });



    }

    public void onClickPoem(View v) {
        todayPoem.setTextSize(20);
        todayPoem.setText(s1);
    }

xml文件包含一个textview和一个从firebase获取数据的按钮。但问题是每当我点击按钮时数据都不会立即显示,通常需要大约5-6次按钮才能显示数据。我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

之前我遇到过这个问题......我建议你这样做:

mrf.setAndroidContext(this);
mrf = new Firebase('Firebase url');


final Firebase myData = mrf.child("info");
    myData.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(final DataSnapshot dataSnapshot) {

            x1 = dataSnapshot.getValue(String.class);
            x2 = x1; // Global variable


        }

        @Override
        public void onCancelled(FirebaseError firebaseError) {

        }
    });

使用变量' x2'做你想做的事。我不知道为什么但是使用用于从Firebase接收数据的相同变量存在一些问题。

希望它能与你合作......

此外,如果您希望用户知道正在检索数据,您可以将progressBar与Handler一起使用。点击一个按钮后,' x1' equals null执行以下操作:progressBar.setVisibility(View.VISIBLE);

然后

handler.postDelayed(new Runnable() {
       public void run() {

            progressBar.setVisibility(View.GONE);
            t.setText(x2);

     }
}, 800);
祝你好运..