从片段中动态获取ImageView中的图像始终返回0作为resourceid

时间:2014-09-01 02:49:57

标签: android android-listview

在提出这个问题之前,我已经完成了所有链接,仍然无法解决问题。

我有一个包含自定义列表视图的片段,我正在尝试从字符串中动态获取imageView中的图像(对于每个列表项)。(字符串是从数据库生成的,字符串的名称与drawable中的图像名匹配。*文件夹)

以各种可能的方式,我只是将emageResouce int值设为0。 我已完全检查,图像名称(在可绘制文件夹中)与生成的字符串匹配。

以下是代码: -

int imageResource = getActivity().getResources().getIdentifier("android.banking:drawable/" + bank.getImageName(), null, null);
Log.d("BankListFragment", getContext().getPackageName() +"  "+imageResource +" "+bank.getImageName());
image.setImageResource(imageResource);


int imgResource = res.getIdentifier(bank.getImageName(), "drawable", getContext().getPackageName() );
Log.d("BankListFragment", getContext().getPackageName() +"  "+imgResource  +" "+bank.getImageName());

如果我尝试使用src =“@ drawable / image1”对布局文件中的图像名称进行硬编码,则其工作原理。 此外,如果我使用以下代码,它可以工作 -

Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.image1);
image.setImageDrawable(drawable);

有人遇到过类似的问题吗?

编辑:: - 这里是logcat输出: - 打印正确的图像名称,可绘制的文件夹包含所有这些文件。

09-01 15:47:34.051  17620-17620/android.banking D/BankListFragment﹕ android.banking  0 image1.jpg
09-01 15:47:34.051  17620-17620/android.banking D/BankListFragment﹕ android.banking  0 image2.jpg
09-01 15:47:34.061  17620-17620/android.banking D/BankListFragment﹕ android.banking  0 image3.jpg
09-01 15:47:34.061  17620-17620/android.banking D/BankListFragment﹕ android.banking  0 image4.jpg
09-01 15:47:34.061  17620-17620/android.banking D/BankListFragment﹕ android.banking  0 image5.jpg
09-01 15:47:34.061  17620-17620/android.banking D/BankListFragment﹕ android.banking  0 image6.jpg
09-01 15:47:34.061  17620-17620/android.banking D/BankListFragment﹕ android.banking  0 image7.jpg

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,对我来说有用的是没有扩展名的字符串。

您生成的字符串不应包含扩展名。

你在Drawable代码中访问的方式没有扩展,我认为你需要修改图像名称生成String的逻辑。

希望这有帮助。

答案 1 :(得分:0)

试试这个 -

int resourceId = getActivity().getResources().getIdentifier(bank.getImageName(),"drawable",getActivity().getPackageName());