2017-06-24 8 views
0

私は質問があります。私はバイト配列というイメージをSQLiteデータベースに保存できることを知っています。しかしこれには余分なCPUが必要なので、id(R.drawable.myImage)だけを保存しようとしました。イメージIDをSQLiteデータベースに保存していますが、取得できません。

私はそれを整数として保存しました。私はそれを元に戻すことができます。私はこのようなImageViewのに私の画像を設定しています:

ivSportIcon.setImageResource(getItem(i).getIcon()); 

しかし、私はエラーを取得する:

Resources$NotFoundException: Resource ID #0x8

は、これは間違った方法ですか?イメージをバイト配列として保存する必要がありますか?前もって感謝します!

+0

あなたが試したことを示すには[mcve]を表示してください。 –

答えて

0

リソースIDの格納方法はわかりませんが、0x8はリソースIDではありません。

これ以外にも、各ビルドごとにリソースIDが変わるので、今日保存するリソースIDは明日とは異なることに注意してください。

代わりに、データベースに他の識別子を格納します。これを使用して、使用するドロウアブルを決めることができます。

実際の画像データをデータベースに保存する唯一の理由は、今後画像を変更する予定がある場合です。あなたは、データベースに関連付けられている古い画像を使用できるようにします。エントリ。

+0

いいえ0x8はR.javaファイルの有効なリソースIDです。それ以外は、あなたが正しいです。私は私のアプリのために画像をdbに保存する必要はないかもしれません。また、毎回リソースのIDが変わっているのを知らなかった。私は他のいくつかの返信を待つつもりですが、私はこれを答えとして受け入れるかもしれません。これまで以上に、このトピックに関する詳細情報を追加することもできます。 – Zapdos

0

あなたは代わりに文字列としてDrawableの名を格納し、そのIDを取得するためにthis methodを使用することができます。あなたはドロウアブルの名前を変更することを決定したかのように

public static int getResourceIdForName(Context context, String drawableName) { 
    final Resources res = context.getResources(); 
    final String packageName = context.getPackageName(); 
    return res.getIdentifier(drawableName , "drawable", packageName); 
} 

これは、しかし、少し柔軟性に欠けています将来、データベース内の名前も変更する必要があります。

関連する問題