2017-04-17 61 views
1

在嘗試按照其他人的教程嘗試重現之前,我試圖按照一些教程進行操作,但有一個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) { 

      } 
     }); 



    } 
} 
+0

你能否澄清究竟是不是工作?你在嘗試什麼,你的預期輸出是什麼?實際產出?謝謝 – Cullub

+0

我想獲取食物中的數據,但只有(肉,豬肉,雞肉)沒有狀態,目前是這樣的:{雞=好,豬肉=驚人,肉=好}它顯示每個人都一樣線。我希望它是: -pork -chicken -Meat – Csak

回答

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) { 

    } 
}); 
} 
} 
+0

我試過這個並且沒有工作: 04-17 21:46:04.106 10096-10096/cai.com.fireteste E/AndroidRuntime:致命異常:主要過程:cai .com.fireteste,PID:10096 java.lang.NullPointerException:嘗試在android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter)的空對象引用上調用虛方法'java.lang.String java.lang.Object.toString()' .java:409)at android.view.Choreographer.doCallbacks(Choreographer.java:686)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)... – Csak

+0

您是否刪除了數據庫? –

+0

不,數據庫保持活動狀態並且內部名稱相同。 – Csak