2011-10-12 85 views
0

我有一個關於在an​​droid中填充listviews的基本問題。現在,如果我想這樣做,我使用SimpleCursorAdapter,它工作得很好。但是由於我的程序變得越來越複雜,我想在顯示數據之前操作數據(您知道,將字符串格式化爲aso)。我面臨的問題是,在從數據庫請求到ListElements的路上,並沒有真正的點,我可以在這裏操縱數據。由於每個ListElement有四個TextView,因此就我所知,ArrayAdapter是不可能的。由於我對Android非常陌生,所以我甚至不知道該怎麼去Google。Android人口列表視圖

非常感謝您的幫助, 丹尼爾

+0

@Sephy他在這裏只問了3個問題,甚至你告訴他接受答案。 –

+0

我發現:[點擊這裏](http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/)它應該幫助你! – kyp

+0

所以你真的必須編寫自己的適配器?我希望有一個更簡單的方法,但我會嘗試並讓你知道,如果它工作。謝謝。 – Daniel

回答

0

這樣做的常見方式,以便爲您的適配器的getView。你可以這樣做:

class ContactAdapter extends ArrayAdapter<String> { 

     private LayoutInflater mInflater; 

     public ContactAdapter(Context context, int textViewResourceId, List<String> items) { 
      super(context, textViewResourceId, items); 
      mInflater = LayoutInflater.from(context); 
     } 

     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 

      ViewHolder holder; 
      if (convertView == null) { 

       convertView = mInflater.inflate(R.layout.rowcontact, null); 
       holder = new ViewHolder(); 
       holder.lastname = (TextView) convertView.findViewById(R.id.rowTop); 
       holder.firstname = (TextView) convertView.findViewById(R.id.rowBottom); 
       holder.iconContact = (ImageView) convertView.findViewById(R.id.iconContact); 
       convertView.setTag(holder); 
      } else { 

       holder = (ViewHolder) convertView.getTag(); 
      } 
      String item = getItem(position); 
      int i = (int) (Math.random() * 5 + 1); 

      switch (i) { 
      ... 
      } 
      if (item != null) { 
       holder.lastname.setText(item.split("-")[0]); 
       holder.firstname.setText(item.split("-")[1]); 
       holder.iconContact.setImageBitmap(bm); 
      } 
      return convertView; 
     } 
    } 

    static class ViewHolder { 
     TextView lastname; 
     TextView firstname; 
     ImageView iconContact; 
    } 
} 

你可以找到完整的代碼示例there。通過持有者示例,您可以設置4個視圖並進行更新。