2016-06-11 8 views
0

ボタンをクリックするたびにfirebaseからフェッチされたデータを表示したいとします。これは現在使用しているコードです複数のボタンを使用して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回のボタンクリックが必要になることです。私はここで間違って何をしていますか?

+0

を。そして、帰るには時間がかかります。 –

+0

改善のための提案。私は、データがアップロードされているということをユーザーに伝えることをしばらく待ちますか? –

+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からDataを受け取るために使用された変数と同じ変数を使用することには問題があります。あなたがデータを使用して、ハンドラでプログレスバーを使用することができます取得されていることを知っているユーザーをご希望の場合は

はまた

...それはあなたと仕事願っています。ボタンをクリックし、「x1は」ヌルに等しくされた後、このような何か:呼び出しがバックグラウンドスレッドで作られているのでprogressBar.setVisibility(View.VISIBLE);

その後、

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

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

    } 
}, 800); 

幸運..

関連する問題