Android:如何根据所选的列表项更改drawable

时间:2011-04-11 18:40:59

标签: android listview drawable

我的问题:向用户显示列表视图,显示动物列表,根据选择的项目,下一个活动将向用户显示所选动物的图像。

到目前为止,我的方法是传递所选列表项的位置:

intent.putExtra("position_on_list", position)

在下一次活动中获取额外内容。

这是我感到困惑的地方。如何根据所选动物动态显示图片?我尝试过if语句;

if(position == 0){
   ImageView icon = (ImageView)view.findViewById(R.id.animalImg)
   icon.setImageResource(R.drawable.tiger)
}

但是当我运行应用程序时,这会导致错误。有人指出我正确的方向,我可能会如何正确地执行此操作。

谢谢。

1 个答案:

答案 0 :(得分:3)

至于你的错误,没有关于错误的任何细节,它可能是任何东西......

我认为if语句没问题,你可能想用默认语言做一个switch语句:作为替代。

switch (position){
 case 0:
 break;
 default:
 break;
}

我个人喜欢的另一个选择是将您的图像放在arrays.xml资源文件中并创建一个TypedArray,它更干净,更友好。

arrays.xml文件看起来像这样

<?xml version="1.0" encoding="utf-8"?>
 <resources>
        <string-array name="animals">
        <item>@drawable/tiger</item>
        <item>@drawable/bear</item>
        <item>@drawable/...</item>
    </string-array>
</resources>

你的活动会有这样的东西,没有开关或ifs

TypedArray ar = getResources().obtainTypedArray(R.array.animals)));
ImageView icon = (ImageView)view.findViewById(R.id.animalImg)
icon.setImageResource(ar.getResourceId(position, -1));