Firebase将数据返回到listview

时间:2017-04-17 14:51:52

标签: android listview firebase firebase-realtime-database

我在问这里之前尝试过一些教程,但是当根据其他人的教程尝试重现时,有一个字符串错误的hashmap和类似的东西。

我的怀疑如下:

我在下面的方式我可以从Firebase获取值,但我想只获取“食物”(肉类,鸡肉,...)中的信息,如果它没有信息则没有信息或不。以及如何列出项目而不是将它们放在一起。 感谢的

enter image description here

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.google.firebase.database.ChildEventListener;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.ArrayList;
import java.util.Map;

public class MainActivity extends AppCompatActivity {


    DatabaseReference dref;
    ListView listview;
    ArrayList < String > list = new ArrayList < > ();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        listview = (ListView) findViewById(R.id.listview);

        final ArrayAdapter < String > adapter = new ArrayAdapter < String > (this, android.R.layout.simple_list_item_1, list);

        dref = FirebaseDatabase.getInstance().getReference();

        dref.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {


                String teste = dataSnapshot.child("Restarant").child("foods").getValue().toString();

                adapter.add(teste);
                listview.setAdapter(adapter);
                adapter.notifyDataSetChanged();



            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });



    }
}

1 个答案:

答案 0 :(得分:0)

试试这个

 public class MainActivity extends AppCompatActivity {


 DatabaseReference dref;
 ListView listview;
 ArrayList<String> list=new ArrayList<>();
 @Override
 protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   listview=(ListView)findViewById(R.id.listview);

   final ArrayAdapter<String> adapter= new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);

   dref=FirebaseDatabase.getInstance().getReference().child("Restarant");

   dref.child("foods").addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {


       list.add(dataSnapshot.child("chicken").getValue(String.class));
       list.add(dataSnapshot.child("meat").getValue(String.class));
       list.add(dataSnapshot.child("pork").getValue(String.class));


        listview.setAdapter(adapter);
        adapter.notifyDataSetChanged();



    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }
});
}
}