我正在使用一个带有基本适配器的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