2016-10-10 3 views
0

Ich habe kleine Anwendung in Android geschrieben.Android - Drawable Weg

Von SQLite-Datenbank, ich hole einige Kategorien und Symbolnamen wie (Hotels, Wohnungen, etc.). Alle Beispiele von Bildern, die ich in drawable Ordner habe.

Jetzt versuche ich, diese Bilder und zeigen sie in der Liste zu lesen, aber ich habe Probleme mit ziehbar Weg. Der Fehler ist immer: open failed: ENOENT (No such file or directory).

Hier Codebeispiel:

@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; 
} 

Antwort

0

@Gabe Sechan gab mir eine großartige Idee, also habe ich dieses Problem behoben. Wenn jemand das gleiche Problem hat, ist hier die Antwort.

Speichern Sie Namen in DB und wandeln sie dann zu int so dass Sie die Bildressource einstellen. Hier ist der Code:

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

imageView.setImageResource(resID); 

Hope this jemand helfen. Für mein Projekt funktioniert das perfekt.

1

ich wirklich nicht vorschlagen Ihr Zugriff auf Ihre Drawables auf diese Weise. Die verwendeten IDs sind nicht stabil, jede neue Version könnte die Verknüpfung unterbrechen. Wenn Sie sie über einen externen db verweisen haben, würde ich entweder schreiben die Drawables aus auf das Dateisystem und sie als normale Dateien verweisen, oder ich würde den ziehbar Name in der DB speichern und die ID über Nachschlag bekommen, dann auf sie verweisen über diese ID.

+0

Können Sie einige Beispiel geben Sie mir, wie es durch Lookup zu tun? –