2012-07-21 120 views
1

這是我到目前爲止有:將自定義對象添加到ArrayAdapter。如何抓取數據?

自定義對象:

class ItemObject { 
    List<String> name; 
    List<String> total; 
    List<String> rating; 

public ItemObject(List<ItemObject> io) { 
    this.total = total; 
    this.name = name; 
    this.rating = rating; 
} 
} 

調用適配器:

List<String> names, ratings, totals; 

ItemObject[] io= new ItemObject[3]; 
io[0] = new ItemObject(names); 
io[1] = new ItemObject(rating); 
io[2] = new ItemObject(totals); 

adapter = new ItemAdapter(Items.this, io); 
setListAdapter(adapter); 

假設上面看起來不錯,我的問題是如何將我設置ItemAdapter,它是構造函數,並從對象中展開三個List。然後,在getView,分配這些東西:

每個匹配位置:

TextView t1 = (TextView) rowView.findViewById(R.id.itemName); 
    TextView t2 = (TextView) rowView.findViewById(R.id.itemTotal); 
    RatingBar r1 = (RatingBar) rowView.findViewById(R.id.ratingBarSmall); 

例如,在陣列的 「人名」 到t1位置0。 將數組中的位置0「合計」到t1。 陣列「評級」中的0位置爲r1。

編輯:我不希望有人寫整個適配器。我只需要知道如何從自定義對象中展開列表以便我可以使用這些數據。 (甚至沒有提出或在另一個問題中詢問

+0

這是非常相似,你的問題昨天:[將多個列表傳入ArrayAdapter](http://stackoverflow.com/q/11584398/1267661) – Sam 2012-07-21 15:56:18

+0

另一個問題是簡單地詢問如何(或什麼方法使用)做某事。事實上,我仍在研究如何做到這一點。這個問題指的是一個具體的做法。另外,在這個問題上根本沒有提到。我仍在決定如何處理這個問題。我仍然感謝大家在提供的答案中提供的幫助。我很可能會回到其中一個想法。 – KickingLettuce 2012-07-21 16:05:30

+0

感謝人們的一種常見方式是提出有意義的答案,並將最佳答案標記爲正確。 – Sam 2012-07-21 16:09:58

回答

11

您的代碼不會以其實際的形式工作。你真的需要ItemObject中的數據列表嗎?我的猜測是否定的,你只需要一個ItemObject,它包含3行,對應於你行佈局中的3個視圖。如果是這種情況:

class ItemObject { 
    String name; 
    String total; 
    String rating;// are you sure this isn't a float 

public ItemObject(String total, String name, String rating) { 
    this.total = total; 
    this.name = name; 
    this.rating = rating; 
} 
} 

那麼你的名單將被合併到的ItemObject列表:

List<String> names, ratings, totals; 
ItemObject[] io= new ItemObject[3]; 
// use a for loop 
io[0] = new ItemObject(totals.get(0), names.get(0), ratings(0)); 
io[1] = new ItemObject(totals.get(1), names.get(1), ratings(1)); 
io[2] = new ItemObject(totals.get(2), names.get(2), ratings(2)); 
adapter = new ItemAdapter(Items.this, io); 
setListAdapter(adapter); 

和適配器類:

public class ItemAdapter extends ArrayAdapter<ItemObject> { 

     public ItemAdapter(Context context, 
       ItemObject[] objects) { 
      super(context, 0, objects);   
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      // do the normal stuff 
      ItemObject obj = getItem(position); 
      // set the text obtained from obj 
        String name = obj.name; //etc  
        // ... 

     }  

} 
+1

由於這是投票結束(出於某種原因),我打算將它作爲正確的投票,以免太晚。希望確保您獲得信用,這就是我一直在尋找的! – KickingLettuce 2012-07-21 21:20:23

相關問題