将firebase实时数据库与android应用程序集成

时间:2017-06-24 08:40:35

标签: android firebase firebase-authentication

应用程序无法从firebase控制台接收数据。

我在清单文件中设置了INTERNET权限。 我的布局文件中也有一个列表视图。 Firebase助手还会显示我的应用已连接到Firebase,正确设置了依赖关系

这是我的java课程:

public class Todaytips extends Activity implements ValueEventListener {
    DatabaseReference dref;
    ListView listView;
    ArrayList<String> list=new ArrayList<>();
    ArrayAdapter<String> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.todaytips);
        listView=(ListView)findViewById(R.id.listview);
        adapter=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,list);
        dref= FirebaseDatabase.getInstance().getReference();
        dref.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
             String value= dataSnapshot.getValue(String.class);
                list.add(value);
                adapter.notifyDataSetChanged();
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

                String value= dataSnapshot.getValue(String.class);
                list.remove(value);
                adapter.notifyDataSetChanged();

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_activity_one, menu);
        return true;
    }


    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

    }

    @Override
    public void onCancelled(DatabaseError databaseError) {

    }

}

2 个答案:

答案 0 :(得分:0)

这种方式对我有用,首先在onCreate方法之外声明DatabaseReference;

DatabaseReference dbRef =     FirebaseDatabase.getInstance().getReference

然后,使用各自的TextView创建数据库的引用名称;

DatabaseReference tView = dbRef.child("AValueNameThatYouGiveInConsole");

声明一个TextView变量,

TextView text1; (this can go on in one line)

在onCreate中,

text1 = (TextView) findViewById (R.id.YourTextViewID's)

第3步,在onCreate方法之外,创建一个名为onStart的新方法。

@Override
protected void onStart(){
super.onStart();

tView.addValueEventListener (new ValueEventListener() {

@Override
public void onDataChange(DataSnapshot snapshot) {
String x = snapshot.getValue(String.class); text1.setText(x); }

//让onCancelled方法原样

答案 1 :(得分:0)

我有不同的项目ID,因为我的android studio和firebase已登录 在不同的谷歌帐户。