Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从google firebase检索数据并在android studio应用程序的列表视图中显示_Java_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Java 从google firebase检索数据并在android studio应用程序的列表视图中显示

Java 从google firebase检索数据并在android studio应用程序的列表视图中显示,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我和我的团队正在进行一个android studio项目。我们可以向firebase添加数据。我们试图从数据库中检索数据,但我们认为无法引用正确的ID来检索列表视图中的数据。我们试图在Feedings类下检索数量、类型和开始。 这是我的密码: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.lay

我和我的团队正在进行一个android studio项目。我们可以向firebase添加数据。我们试图从数据库中检索数据,但我们认为无法引用正确的ID来检索列表视图中的数据。我们试图在Feedings类下检索数量、类型和开始。

这是我的密码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_feeding_list);

    mListView = (ListView) findViewById(R.id.listView);

    mAuth = FirebaseAuth.getInstance();
    database = FirebaseDatabase.getInstance();
    //myRef = database.getReference();
    FirebaseUser user = mAuth.getCurrentUser();
    userID = user.getUid();
    myRef = database.getReference("/Users/" + userID + "/Feedings");

    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if(user != null){
                Log.d(TAG, "Signed in" + user.getUid());
                toastMessage("Successfully signed in: ");
            }else{
                Log.d(TAG, "Currently signed out");
            }

        }
    };

    myRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            showData(dataSnapshot);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

}

private void showData(DataSnapshot dataSnapshot) {
    for(DataSnapshot ds: dataSnapshot.getChildren()){
        Feeding feeding = new Feeding();
        feeding.setAmount(ds.child(userID).getValue(Feeding.class).getAmount());

        Log.d(TAG, "showData: name: " + feeding.getAmount());

        ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add(feeding.getAmount());
        ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, arrayList);
        mListView.setAdapter(adapter);
    }
}

@Override
public void onStart(){
    super.onStart();
    mAuth.addAuthStateListener(mAuthListener);
}

@Override
public void onStop(){
    super.onStop();
    if(mAuthListener != null){
        mAuth.removeAuthStateListener(mAuthListener);
    }
}


private void toastMessage(String message){
    Toast.makeText(this, message, Toast.LENGTH_LONG).show();
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u feed\u列表);
mListView=(ListView)findViewById(R.id.ListView);
mAuth=FirebaseAuth.getInstance();
database=FirebaseDatabase.getInstance();
//myRef=database.getReference();
FirebaseUser=mAuth.getCurrentUser();
userID=user.getUid();
myRef=database.getReference(“/Users/”+userID+“/Feedings”);
mAuthListener=new FirebaseAuth.AuthStateListener(){
@凌驾
AuthStateChanged上的公共void(@NonNull FirebaseAuth FirebaseAuth){
FirebaseUser=firebaseAuth.getCurrentUser();
如果(用户!=null){
Log.d(标记“登录”+user.getUid());
toastMessage(“成功登录:”;
}否则{
Log.d(标签“当前已注销”);
}
}
};
myRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
showData(dataSnapshot);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
}
私有void showData(DataSnapshot DataSnapshot){
对于(DataSnapshot ds:DataSnapshot.getChildren()){
喂食=新喂食();
feeding.setAmount(ds.child(userID).getValue(feeding.class.getAmount());
d(标记“showData:name:”+feed.getAmount());
ArrayList ArrayList=新的ArrayList();
add(feed.getAmount());
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,arrayList);
mListView.setAdapter(适配器);
}
}
@凌驾
public void onStart(){
super.onStart();
mAuth.addAuthStateListener(mAuthListener);
}
@凌驾
公共void onStop(){
super.onStop();
if(mAuthListener!=null){
removeAuthStateListener(mAuthListener);
}
}
专用无效toastMessage(字符串消息){
Toast.makeText(这个,消息,Toast.LENGTH_LONG).show();
}

}

试着像这样使用参考资料,它是在官方文件中提供的。 请注意您的ShowData方法,它不正确

myRef = database.getReference();  

  myRef.child("Users").child(userID).child("Feedings")
   .getReference().addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            showData(dataSnapshot);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });




private void showData(DataSnapshot dataSnapshot) {
    ArrayList<String> arrayList = new ArrayList<>();

    for(DataSnapshot ds: dataSnapshot.getChildren()){
        Feeding feeding = ds.getValue(Feeding.class);
        Log.d(TAG, "showData: name: " + feeding.getAmount());
        arrayList.add(feeding.getAmount());

    }


        ArrayAdapter adapter = new 
        ArrayAdapter(this,android.R.layout.simple_list_item_1, arrayList);
        mListView.setAdapter(adapter);
}
myRef=database.getReference();
myRef.child(“用户”).child(用户ID).child(“喂养”)
.getReference().addValueEventListener(新的ValueEventListener()){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
showData(dataSnapshot);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
}
});
私有void showData(DataSnapshot DataSnapshot){
ArrayList ArrayList=新的ArrayList();
对于(DataSnapshot ds:DataSnapshot.getChildren()){
feed feed=ds.getValue(feed.class);
d(标记“showData:name:”+feed.getAmount());
add(feed.getAmount());
}
ArrayAdapter适配器=新
ArrayAdapter(这是android.R.layout.simple\u list\u item\u 1,arrayList);
mListView.setAdapter(适配器);
}

没有输出,应用程序崩溃。我运行了调试器,发现问题在于引用数据库。