如何将URI转换为可绘制的整数并将其添加到int [] arrayable of drawables?

时间:2015-03-25 13:06:50

标签: android android-drawable

我有一个存储drawables的整数数组:

 menuIcons = new int[] {R.drawable.icon_default,R.drawable.icn_delete_45x45,
    R.drawable.icn_delete_45x45,R.drawable.icn_delete_45x45 };

我使用此数组来填充列表中的图像。现在问题的情况是,对于第一行,我在draable文件夹中没有图像但是我的数据库中有一个URI,这个URI可以引用SDCard上的服务器URL或本地URI,甚至是内容提供者URI。我有一个功能来处理来自各种来源的图像显示。

这里的问题是我不知道如何在我的int数组drawables的位置0添加这个URI,或者甚至可能?

作为管道磁带解决方案,我可以将此URI传递给ListAdapter类的构造函数,并检测位置0并相应地显示图像。但这不是一个合适的解决方案。

1 个答案:

答案 0 :(得分:2)

作为一组资源ID,你不可能做你想要的事情。原因很简单:您引用的图像位于其他位置,不属于您应用的静态资源。

更新:

你可以从以下内容开始:

Object[] menuIcons = { "some://uri", "some://other_uri", R.drawable.icon_default,R.drawable.icn_delete_45x45,
R.drawable.icn_delete_45x45,R.drawable.icn_delete_45x45 };

List<Drawable> drawables = new ArrayList<>();

for( Object ic : menuIcons ){
  switch( ic.getClass().getSimpleName() ){
    case "int":
    case "Integer":
      drawables.add( getResources().getDrawable( (int)ic );
      break;

    case "String":
      drawables.add( getDrawableFromSomeUri( (String)ic ) );
      break;

    case "URL":
      drawables.add( getDrawableFromSomeURL( (URL)ic ) );
      break;

  }
}

而不是List您可以使用Map来简化查找