2017-10-05 30 views
0

我試圖從Firebase檢索數據到ListView中。雖然它能夠正確檢索數據,但它會在我的項目ID後顯示一些隨機值。我的數據庫看起來像這樣:enter image description here 我創建了一個對象,其中包含「買家」下的每個字符串中的所有值,然後我想要列表視圖中顯示某些值(「Navn」和「Telefonnr」。但如圖所示,它給我什麼似乎是一個隨機生成的字符串(更改每次我激活活動)。我的代碼看起來像這樣(買家類/對象如下所示): 更新!:解決,更新的代碼發佈給需要它的人: )當檢索數據對象到列表視圖時,Firebase返回隨機值

  private ListView mUserList; 

     private ArrayList<String> mUsernames = new ArrayList<>(); 

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

      mDatabaseReference = FirebaseDatabase.getInstance().getReference("Buyers"); 

      mUserList = (ListView) findViewById(R.id.UserListView); 

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

      mUserList.setAdapter(arrayAdapter); 

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

        for (DataSnapshot childSnapshot : dataSnapshot.getChildren()) { 

         Map<String, String> map = (Map<String, String>) childSnapshot.getValue(); 
         Log.v("YourValue,","Map value is:" +map.toString()); 
         Log.d("TAG", "onChildAdded:" + dataSnapshot.getKey()); 
         Buyers buyerList = new Buyers(map); 
         mUsernames.add(buyerList.getData()); 
        } 
        arrayAdapter.notifyDataSetChanged(); 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 
     } 

這是 「買家」 類:

public class Buyers { 
private String car_Value; 
private String interest; 
private String driverLicenseNr; 
private String name; 
private String personNr; 
private String phone_Number; 

public Buyers(Map<String,String> map){ 
    car_Value = map.get("Bil"); 
    interest = map.get("Interresse"); 
    driverLicenseNr = map.get("Kørekortnr"); 
    name = map.get("Navn"); 
    personNr = map.get("Personnr"); 
    phone_Number = map.get("Telefonnr"); 
} 
String getData() 
{ 
    return (name + phone_Number); 
} 
+0

我猜測在你的適配器中,你正在顯示買家對象。要獲得所需的值,可以重寫ToString()函數或爲所需的值添加getters。請將您的適配器代碼添加到問題中。 –

+0

這就是全部,你可以看到一切。 arrayAdapter就像我想的那樣使用,我是新手,只是看了一些視頻,但它對我不起作用。 – Michael

回答

1

你傳遞一個LIS你的類的對象買家填充了來自數據庫的數據,因此它打印了每個類的id。每個這些對象都有雖然數據...

解決方案:

  • 變化mUsernames到一個ArrayList
  • 裏面創建BuyerList一個getter返回要顯示 例如數據:字符串的getData( ){return car_value + interest)};
  • 然後將該數據添加到您的列表
    mUsernames.add(buyerList.getData);
+0

嗯,除了返回的void之外,這確實有很大的意義,因爲void不能返回:)我嘗試使用「String getData()...」來代替,但doesn似乎沒有用。你有沒有想法讓這部分工作?根據代碼,不是mUsernames已經是ArrayList,還是我誤解了某些東西? – Michael

+0

將ArrayList更改爲字符串而不是「買家」!我的更新代碼在描述中,非常感謝! – Michael

相關問題