簡體   English   中英

適用於Android Studio的Firebase-如何遍歷數據庫中的每個項目?

[英]Firebase For Android Studio - How do you loop through each item in a database?

我有一個firebase實時數據庫,如下所示: Firebase數據


我想以這種格式創建一個按鈕:

Android Studio


我該怎么做呢?

每個Button也應該這樣做:

 Intent intent = new Intent(getBaseContext(), FishInfo.class); intent.putExtra("typeName", "Barbs"); intent.putExtra("typeInfo", "Sample Description..."); startActivity(intent); 

但是使用正確的typeName和typeInfo

先感謝您

要在上述數據庫中進行迭代,請嘗試以下操作:

    DatabaseReference ref=FirebaseDatabase.getInstance().getReference().child("Categories");
ref.addValueEventListener(new ValueEventListener(){
 @Override
 public void onDataChange(DataSnapshot dataSnapshot) {
  for(DataSnasphot datas: dataSnasphot.getChildren()){
  String num=datas.child("1").getValue().toString();
  String twos=datas.child("2").getValue().toString();
  String threes=datas.child("3").getValue().toString();
  String four=datas.child("4").getValue().toString();
  //so on
 }

 }

 @Override
public void onCancelled(FirebaseError firebaseError) {


 }
});

使用for循環,那么你就可以迭代里面BarbsTetras ,並得到屬性值內部它們(的1,2,3,4,5,6值。)

對於按鈕:

     btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {

  Intent intent = new Intent(getBaseContext(), FishInfo.class);
        intent.putExtra("typeName", num);
        intent.putExtra("typeInfo", twos);
        startActivity(intent);
  finish();
   }
  });

我們有一個非常扁平的firebase數據結構,一旦您了解結構是KEY String“ 1”和VALUE是String,就可以通過單擊按鈕遍歷數據庫。 這種解決方案雖然不夠優雅,但卻可以解決。 添加數據時要考慮的問題將需要一種增加KEY String的方法。 如果您獲得了dataSnapshot.getChildrenCount()並意識到每條記錄有6行,那么對於2條記錄,您的計數為12,因此第3條記錄從12 + 1開始享受代碼

    public void doNEXT(View view){

    db = FirebaseDatabase.getInstance().getReference();
    dbRef = db.child("Quiz Table");

    dbRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String question = dataSnapshot.child(String.valueOf(X)).getValue(String.class);
            String ansone = dataSnapshot.child(String.valueOf(X = X + 1)).getValue(String.class);
            String anstwo = dataSnapshot.child(String.valueOf(X = X + 1)).getValue(String.class);
            String ansthree = dataSnapshot.child(String.valueOf(X = X + 1)).getValue(String.class);
            String ansfour = dataSnapshot.child(String.valueOf(X = X + 1)).getValue(String.class);
            String corans = dataSnapshot.child(String.valueOf(X = X + 1)).getValue(String.class);
            long valueX = dataSnapshot.getChildrenCount();
            System.out.println("################################################ COUNT Children "+valueX);

            etQuestion.setText(question);
            etAnsOne.setText(ansone);
            etAnsTwo.setText(anstwo);
            etAnsThree.setText(ansthree);
            etAnsFour.setText(ansfour);
            etCorAns.setText(corans);

            X = X + 1;
            String Z = String.valueOf(X);
            etTableName.setText(Z);

            if(X > valueX){
                Intent intentN = new Intent(ViewDatabase.this,MainActivity.class);
                startActivity(intentN);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

正如格林德爾(Grendel)所說,這不是“優雅”的做法,但確實有效! 為了改善他的答案,我們都知道如何使用ArrayList,因此這是另一個版本,其中在onCreate方法中填充(加載)了ArrayList,並在onCreate之外單擊按鈕,使用時可以滾動objArrayList並確保聲明objArrayList。所以它像這樣ArrayList objArrayList = new ArrayList <>()

這是onCreate代碼

        db = FirebaseDatabase.getInstance().getReference();
    dbRef = db.child("Quiz Table");
    dbRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            long valueX = dataSnapshot.getChildrenCount();

            for (DataSnapshot child : dataSnapshot.getChildren())
                objArrayList.add(child.getValue(String.class));

            String S = String.valueOf(objArrayList.size());
            System.out.println("$$$$$$$$$$$$$$$$$$$$$$ objArrayList SIZE " + S);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}// END OF onCREATE BUNDLE
//=========================

這是滾動按鈕的onClick方法

    public void doONE(View view){
    //btn onClick method
    if (objArrayList != null) {
        String question = objArrayList.get(Z);
        String ansone = objArrayList.get(Z = Z +1);
        String anstwo = objArrayList.get(Z = Z +1);
        String ansthree = objArrayList.get(Z = Z +1);
        String ansfour = objArrayList.get(Z = Z +1);
        String corans = objArrayList.get(Z = Z +1);

        etQuestion.setText(question);
        etAnsOne.setText(ansone);
        etAnsTwo.setText(anstwo);
        etAnsThree.setText(ansthree);
        etAnsFour.setText(ansfour);
        etCorAns.setText(corans);
    }
    Z = Z + 1;

    if(Z > dataSnapshot.getChildrenCount()){
        Intent intentN = new Intent(ViewDatabase.this,MainActivity.class);
        startActivity(intentN);
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM