2012-03-03 3 views
1

他の同様のstackoverflowに関する質問から回答を試みましたが、間違っていることを理解できません。私はいくつかの列を含むsqliteデータベースを持っています。そのうちの1つは、res/drawableに格納されたpngファイルのファイル名です。私はsqliteからのアイテムのリストで私のリストビューを設定することができますし、クリックすると、その選択されたアイテムのために保存されたすべての詳細を表示することができます - イメージが表示されないことを除いて。イメージファイルの名前を表示するだけで、その選択したアイテムの正しい名前が表示されます。しかし、私は表示するためにイメージ自体を取得することはできません。sroidデータベースに格納されているテキスト名から描画可能なPNGイメージを表示するにはアンドロイドのリストビューが必要です

イメージsrcファイルをレイアウトxmlにハードコードすると正しく表示されますが、選択されているアイテムに応じてイメージを変更できる必要があります。

これは私がこれを達成しようとした3つの方法です(例えば、res/drawable/acorn.pngファイルを使用して単純化するなど、ハードコードされた名前)。これらの作品はありません。残りのすべてのアイテム詳細情報は表示されますが、イメージは表示されません。私がここで間違っていることは何ですか?

レイアウトXMLを含む:

<ImageView 
android:id="@+id/wordimage" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:maxWidth="200dp" 
android:maxHeight="200dp" 
android:scaleType="center" 
android:contentDescription="image for this word" 
/> 

試み1:

int imageid = getResources().getIdentifier("com.brohoward.androidapps.itzadatabase:drawable/acorn.png", null, null); 
ImageView imagenow = (ImageView) findViewById(R.id.wordimage); 
imagenow.setImageDrawable(getResources().getDrawable(imageid)); 

試行B:

int imageid = getResources().getIdentifier("com.brohoward.androidapps.itzadatabase:drawable/acorn.png", null, null); 
ImageView imagenow = (ImageView) findViewById(R.id.wordimage); 
imagenow.setImageResource(imageid); 

試行C:

ImageView imagenow = (ImageView) findViewById(R.id.wordimage); 
imagenow.setImageBitmap(BitmapFactory.decodeFile("com.brohoward.androidapps.itzadatabase:drawable/acorn.png")); 

ありがとうございます!

+0

あなたは 'ListView'の行に画像を表示しようとしていますか? – Luksprog

+0

私はRelativeLayoutを持っています。これにはImageView、Button、いくつかのTextViewとListViewが含まれています。 ImageViewの表示以外はすべて動作します。 ImageViewのsrcをハードコードすると正しく表示されますが、以前に表示されたListViewから選択した項目と一致するように画像ソースを変更する必要はありません。 –

+0

画像のハードコードに使用したXMLは何ですか? –

答えて

0

getIdentifierへの呼び出しでの.png含めないでください:ImageViewの#setImageResourceを使ってImageViewのを設定し、その後

int imageid = getResources().getIdentifier("com.brohoward.androidapps.itzadatabase:drawable/acorn", null, null); 

を:

ImageView imagenow = (ImageView) findViewById(R.id.wordimage); 
imagenow.setImageResource(imageid); 
+0

ブライアン - 削除しました。(私は忘れていましたが、これを解決しようと試みるすべての試行反復の間に 'それがうまくいくかどうかを確認するために'を追加しました)。 それだけで、私が設定した3つの方法のいずれかで問題が解決されませんでした。しかし、私はそれを変更する必要があることに同意します。それをキャッチするためにありがとう。 ジム・ローズの答えは、私がそこからやったことについてです。 –

0

私はかどうかgetResources().getIdentifier()検証することにより開始します正しいリソースIDを返しています。返されるものと、R.javaのイメージ用に生成されたリソースIDを比較します。

リソースIDが正しい場合、この試してみてください。リソースのIDが正しくない場合

Bitmap bmpWord = BitmapFactory.decodeResource(getResources(), imageid); 
imagenow.setImageBitmap(bmpWord); 

を、そしてそれはあなたの問題です。

+0

Jim - @Brian Cooleyの回答をご覧になり、返されたIDを確認しました: getResources()。getIdentifier( "com.brohoward.androidapps.itzadatabase:drawable /" + cursor.getString(cursor.getColumnIndex( "imagedefault" ))、null、null); それのR.javaリストと比較し、acorn.pngとbaby.pngため2130837506ため2130837504を与えた: のpublic static final int型ドングリ= 0x7f020000。 および パブリックstatic final int baby = 0x7f020002; それは私の問題ですか?どうしてそれが何か違うものを返すのだろうか? imagedefaultというラベルの列は、次のように使用して塗りつぶされます。 cv.put(IMAGE_DEFAULT、 "acorn"); および cv.put(IMAGE_DEFAULT、 "baby"); –

+0

これらは16進数と10進数で表された同じ値です。 0x7f020000 = 2130837504と0x7f020002 = 2130837506。私の答えの編集を見てください。 –

関連する問題