我正在使用一個帶有基本適配器的listview。setDrawable with dynamic parameter
- 每行有1個imageview + 1個textview。
- 我希望能夠用代碼動態地填充每行圖像,而不是xml
- 我的圖像位於我的可繪製文件夾中。
- 每張圖片都有一個名稱:i1,i2,...,i1000。
- 當我填充我的名單,我希望能夠設置I1到第1行,I2行到第2,酷睿i3到第3行等
每一行的XML代碼:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/containerView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ImageView
android:id="@+id/imgView"
android:layout_height="50dip"
android:layout_width="50dip">
</ImageView>
<TextView
android:id="@+id/descView"
android:layout_toRightOf="@+id/imgView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TextView>
</RelativeLayout>
我正在使用適配器來填充每行中的相關數據。讓我們以實例來填充文字,效果很好:
TextView tv = (TextView)ll.findViewById(R.id.descView);
tv.setText(<some dynamic data with whatever parameters and conditions>);
但是,當我想要做動態填充的圖像同樣的事情,我堅持:
ImageView iv = (ImageView)ll.findViewById(R.id.imgView);
iv.setBackgroundResource(R.drawable.<problem is here since it has to be a static name of a file, not dynamic>)
當然,我可以使用一個大型交換機這樣
switch (<some dynamic parameter>) {
case 1: iv.setBackgroundResource(R.drawable.i1); break;
case 2: iv.setBackgroundResource(R.drawable.i2); break;
case 3: iv.setBackgroundResource(R.drawable.i3); break;
但是,看起來像一個可怕的選擇,尤其是對於有數千張圖片的長列表。
那麼如何在這種情況下動態設置圖像,而不依賴於長時間和痛苦的區塊如果還是巨大的開關?
我希望這是明確的,如果沒有,請讓我知道,我會盡我所能,以澄清
感謝
謝謝您回答Pragnani,我不熟悉這一點。它會設置背景還是需要在代碼之後設置背景? – Don
@Kintaro檢查我的編輯,你可以直接將其設置爲圖像資源,正如我在示例中做的 – Pragnani
謝謝你,那就行。我只是添加了以下內容以使其工作:for(int i = 1; i <= 100; i ++) int drawableid = this.getResources()。getIdentifier(「i」+ String.valueOf(i),「 drawable「,this.getPackageName()); 012.iv.setBackgroundResource(drawableid); } – Don