2016-10-10 12 views
0

私はアンドロイドで書かれた小さなアプリケーションを持っています。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; 
} 

答えて

0

@Gabe Sechan私はこの問題を解決しました。もし誰かが同じ問題を抱えているなら、答えがあります。

名前をDBに保存し、intに変換してイメージリソースを設定します。コードは以下のとおりです。

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

imageView.setImageResource(resID); 

これは誰かを助けるでしょう。私のプロジェクトは完璧に働いています。

1

私は本当にあなたのドローアブルこの方法をあなたのアクセスを示唆していません。使用されているIDが安定していない場合、新しいリリースがリンクを壊す可能性があります。外部のデータベースを介してそれらを参照する必要がある場合、私はファイルシステムにdrawablesを書き出し、それらを通常のファイルとして参照するか、またはdbに描画可能な名前を格納し、参照によってIDを取得してから参照しますそのidを通じて。

+0

ルックアップでどのように行うのか、いくつかの例を教えてもらえますか? –

関連する問題