Android - Drawable路径

时间:2016-10-10 20:08:45

标签: java android drawable

我有一个用android编写的小应用程序。

从SQLite数据库中,我提取了一些类别和图标名称,如(酒店,公寓等)。我在drawable文件夹中的所有图像示例。

现在我试图读取这些图像并将它们显示在列表中,但我有可绘制路径的问题。错误总是:open failed: ENOENT (No such file or directory)

以下是代码示例:

@Override
public View getView(int position, View view, ViewGroup parent)
{
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView= inflater.inflate(R.layout.category_list_item, null, true);

    Uri otherPath = Uri.parse("android.resource://"+getContext().getPackageName()+"/drawable/");
    String drawable_path = otherPath.toString();

    Toast.makeText(getContext(), drawable_path, Toast.LENGTH_LONG).show();

    TextView txtTitle = (TextView) rowView.findViewById(R.id.txt);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.img);
    TextView categoryID = (TextView) rowView.findViewById(R.id.category_id);

    txtTitle.setText(items.get(position));
    imageView.setImageDrawable(Drawable.createFromPath(drawable_path+imageIds.get(position)+"\""));
    categoryID.setText(category_ids.get(position));

    return rowView;
}

2 个答案:

答案 0 :(得分:1)

我真的不建议您以这种方式访问​​您的drawables。使用的ID不稳定,任何新版本都可能破坏链接。如果你必须通过外部数据库引用它们,我要么将drawables写入文件系统并将它们作为普通文件引用,或者我将可绘制的名称存储在db中并通过查找获取id ,然后通过该ID引用它。

答案 1 :(得分:0)

@Gabe Sechan 给了我一个好主意,所以我解决了这个问题。如果有人有同样的问题,这里是答案。

将名称存储在数据库中,然后将其转换为int,以便设置图像资源。这是代码:

int resID = getContext().getResources().getIdentifier(imageIds.get(position),
            "drawable", getContext().getPackageName());

imageView.setImageResource(resID);  

希望这会对某人有所帮助。因为我的项目工作得很好。