2016-06-11 46 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接收數據的相同變量存在一些問題。

希望它可以與您一起...

此外,如果你希望用戶知道數據正在檢索您可以使用進度與處理程序。一個按鈕被點擊和「X1」等於後空做這樣的事情:progressBar.setVisibility(View.VISIBLE);

然後

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

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

    } 
}, 800); 

祝你好運..

相關問題