适用于Android Studio的Firebase - 如何遍历数据库中的每个项目?

时间:2018-02-16 18:41:53

标签: java android firebase firebase-realtime-database

我有一个firebase实时数据库,如下所示: Firebase Data

我想以这种格式创建一个按钮:

Android Studio

<小时/> 我该怎么做?

每个按钮也应该这样做:

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

但是使用正确的typeName和typeInfo

提前谢谢

3 个答案:

答案 0 :(得分:1)

要迭代上述数据库,请尝试以下方法: -

    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();
   }
  });

答案 1 :(得分:0)

我们有一个非常平坦的firebase数据结构,一旦你理解了结构,点击按钮就可以循环显示数据库 KEY String&#34; 1&#34;和VALUE是一个字符串。这个解决方案不仅优雅,而且有效。添加数据时要考虑的问题需要一种方法来增加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) {

        }
    });
}

答案 2 :(得分:0)

正如格伦德尔所说,这不是优雅的&#34;但它的确有效!为了改进他的答案我们都知道如何使用ArrayList所以这里是另一个版本,其中ArrayList在onCreate方法中被填充(加载)并且在onCreate外部点击按钮,使用可以滚动objArrayList,一定要声明objArrayList所以它是Global将它放在onCreate之上 ArrayList objArrayList = new ArrayList&lt;&gt;()

这是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);
    }

}