将Firebase中的数据导入Android应用程序

时间:2018-04-10 10:10:23

标签: android firebase firebase-realtime-database

FireBase Image

上面是我试图从中获取的firebase数据库。 你可以看到我有一张桌子"叫" Make"。我已经成功地将这些数据提取到我的应用程序中的Listview中。这个代码如下。

我现在需要从" VW_Data"中提取所有数据。表。这张桌子上有超过1000个孩子名为" 0"高达" 1000"每个标题都有相同的标题,例如"轴承","海拔"等但具有不同的价值观。我想能够拉动"轴承"价值仅来自" VW_Data"的所有1000个孩子。并显示在列表中。

但是我试图只尝试拉动" VW_Data / 0 / Bearing"多种没有效果的方法。

以下是此类的更新代码:

public class Graphview extends Activity
{
//Holds the values gathered from firebase
final ArrayList<String> graphlist = new ArrayList<>();
ArrayAdapter<String> arrayAdapter;

protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    //Sets the layout according to the XML file
    setContentView(R.layout.activity_graphview);

    //XML variable
    final ListView listViewG = findViewById(R.id.listviewG);


    DatabaseReference database = FirebaseDatabase.getInstance().getReference().child("VW_Data");
    database.addListenerForSingleValueEvent(new ValueEventListener()
    {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot)
        {
            for (DataSnapshot datas : dataSnapshot.getChildren())
            {
                String bearing = (String) datas.child("Bearing").getValue();
                //Add the info retrieved from datasnapshot into the ArrayList
                graphlist.add(bearing);
                arrayAdapter = new ArrayAdapter<>(Graphview.this, R.layout.itemview, graphlist);
                listViewG.setAdapter(arrayAdapter);
                //Will refresh app when the data changes in the database
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}//End onCreate()

2 个答案:

答案 0 :(得分:0)

试试这个:

    DatabaseReference database = FirebaseDatabase.getInstance().getReference().child("VW_Data");
    ref.addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot dataSnapshot) {
         Iterable<DataSnapshot> verticalSnapshotItr = dataSnapshot.getChildren();

                      if (verticalSnapshotItr != null) {
                        for (DataSnapshot verticalItemSnapshot : verticalSnapshotItr) {
                     String altitude = (String) verticalItemSnapshot.child("Altitude").getValue();
             // Parse rest keys here
                }

      }

      @Override
      public void onCancelled(DatabaseError databaseError) {

      }
    });

}

答案 1 :(得分:0)

试试这个:

DatabaseReference db = FirebaseDatabase.getInstance()
                                       .getReference()
                                       .child("VW_Data");
db.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot datas : dataSnapshot.getChildren()) {
                String bearing = datas.child("Bearing").getValue().toString();
            }
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});

快照位于VW_Data然后使用for循环,您将能够在内部迭代&#34; 0&#34;并检索值bearing