我正在使用带有基本适配器的listview。
每行的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;
但这看起来是一个可怕的选择,特别是对于包含数千张图像的长列表。
那么在这种情况下如何动态设置图像,而不依赖于长期和痛苦的if else还是一个巨大的开关?
我希望这很清楚,如果没有,请告诉我,我会尽力澄清
由于
答案 0 :(得分:2)
试试这个
for(int i=1;i<=100;i++)
{
int drawableid= this.getResources().getIdentifier("i"+i, "drawable", this.getPackageName());
iv.setBackgroundResource(drawableid);
}
答案 1 :(得分:0)
Context getResources().getIdentifier("i1", "drawable", "your.package.name");
中的