0

このようなローカルsqliteデータベースファイルがあります…</p>

_ID | Color_Name | Image_Name  
1   | Red        | red.png  
2   | Blue       | blue.png  
3   | Green      | green.png  
Etc.

データベースのImage_Name列には、ファイル名のみが含まれ、画像自体は含まれません。すべての画像は、res/drawable-mdpiディレクトリにローカルに保存されます。

目標は、データベースからの色の名前とその色に関連付けられた画像を表示するリストを作成することです。たとえば、リストは次のようになります[下のプラス記号は実際の.png画像を表します]…</ p>

____________________________________________

Red (text only on this line)  
+ (actual red.png image on this line)  
____________________________________________

Blue (text only on this line)  
+ (actual blue.png image on this line)  
____________________________________________

Etc.  

表示する色の名前を取得することはできますが、画像自体を表示する方法がわかりません。名前を表示するためのコードの関連部分は以下のとおりです…</p>

static class ColorHolder {
    private TextView name=null;

     ColorHolder(View row) {             
        name=(TextView)row.findViewById(R.id.colorName);

        }
           void populateFrom(Cursor c, ColortHelper r) {

               name.setText(r.getName(c)) ;
          }
}

名前と画像の両方に関連するxmlファイルの部分は以下のとおりです…</p>

<TextView 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|left"
android:id="@+id/colorName"/>

<ImageView
 android:id="@+id/ImageView00"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:src="@drawable/image1" <!--[NOTE: THIS DEFAULT IMAGE FILE SHOULD BE REPLACED ON THE FLY W/THE CORRECT IMAGE FILE FOR EACH RECORD]-->
  >

私が見つけた他の質問はどれも、私にとってこの問題を解決するのに役立ちませんでした。誰かが私がこれを理解するのを手伝ってくれませんか?助けていただければ幸いですが、実際のファイル名/パス/変数/ IDなど(上記)を説明に使用して、最も簡単にフォローして理解できるようにすると特に役立ちます。応答。チュートリアルを紹介しても役に立たない場合があります。これは、すでに多くの資料を調べたものの、これが解決されなかったためです。ありがとう!

4

2 に答える 2

2

Resources.getIdentifier(String name、String defType、String defPackage)を使用します

また、リソース画像名を保存する必要はありません...(すでに行ったように)色と同じ名前を付けるだけです。ここで示すように、小文字であることを確認してください。

あなたの例を使用するには:

void populateFrom(Cursor c, ColorHelper r) {

    //get the color name from your database (only once)

    String strColor = r.getName(c);

    // set the text on your TextView as before

    TextView clrName = (TextView)findViewById(R.id.ImageView00);
    clrName.setText(strColor);

    // get the resource ID - note "name" without extension

    int resourceID = context.getResources().getIdentifier(strColor.toLower(),
            "drawable", context.getPackageName());

    //get a reference to your imageview and set the image

    ImageView clrImage = (ImageView)findViewById(R.id.ImageView00);
    clrImage.setImageResource(resourceID);

}
于 2012-08-23T02:12:13.207 に答える
1

それを行うにはいくつかの方法があります。自分でやらなければならない場合は、画像をBlobとしてデータベースに保存します。簡単で使いやすい。もう1つの方法は、次のようにif-elseif-elseifを使用することです。

ImageView imageview = findViewById(R.id.ImageView00);
    if( colorname.equals("Red") )
        imageview.setImageResource(R.drawable.red);
    else if( colorname.equals("Red") )
        imageview.setImageResource(R.drawable.blue);
于 2012-08-23T01:31:32.837 に答える