2012-09-08 23 views
0

我需要在每個列表項的右側放置小圖標。我知道這可以通過自定義列表完成,但這意味着需要重新連接大量代碼。如果有辦法做到這一點,而不使用自定義適配器?有什麼方法可以在不使用自定義適配器的情況下在列表中的每個項目旁邊添加圖像?

mList = (ListView) findViewById(R.id.sidebar_list); 
     mList.setAdapter(new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_multiple_choice, mStrings)); 
     mList.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE); 
+0

你的意思somesort縮略圖或每個視圖相同的圖標? –

+0

@KirillKulakov a thumbnail。每個項目不同 – code511788465541441

回答

2

沒有,覆蓋getView自定義適配器內部是動態設置不同的圖像列表行的唯一途徑。但是,如果要爲所有行項目設置靜態(相同)圖像,則可以爲該行定義自定義資源xml(其中TextViewImageView或comppund drawable-TextView inside),並將其傳遞到默認適配器初始化時。

0

是的,您可以使用SimpleAdapter和帶有ImageView的自定義佈局。


簡單的例子:

List<Map<String, String>> list = new ArrayList<Map<String, String>>(); 
Map<String, String> map = new HashMap<String, String>(); 
map.put("text", "one"); 
map.put("image", String.valueOf(getResources().getIdentifier("ic_launcher", "drawable", getPackageName()))); 
list.add(map); 

ListView listView = (ListView) findViewById(R.id.list); 
listView.setAdapter(new SimpleAdapter(this, list, R.layout.list_item, new String[] {"text", "image"}, new int[] {R.id.text, R.id.image})); 
+0

OP仍然需要擴展'SimpleAdapter'或創建一個'ViewBinder'。如果OP真正關心工作量,那麼將數據保存在當前結構中並簡單地擴展'ArrayAdapter'可能會更容易。 – CommonsWare

+0

我會同意使用自定義代碼的計算速度要快得多,但我列出了一個可用的示例。 – Sam

0

您需要的視圖中創建XML佈局(如果你沒有一個),並添加一個ImageView的。 你應該給它和ID(「thubnail」)。接下來,你僅僅通過它的位置要求適配器一定視圖

View singleView = listView.getChildAt(wantedChild); 
ImageView thumbnail = (ImageView) singleView.findViewById(R.id.thumbnail); 
thumbnail.setImageBitmap(bitmap); 
相關問題