我有一个存储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并相应地显示图像。但这不是一个合适的解决方案。
答案 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
来简化查找