1

Ich bekomme einen String aus meiner Server-Anfrage für ein Element in meinem Recyclerview und es gibt mir PDF Word oder Image. Jetzt möchte ich verschiedene Bilder in meinem recyclerviewitem für jeden String anzeigen. Dies ist mein Code:recycler view mit verschiedenen Bildern von serverdata

@Override 
public void onBindViewHolder(ScriptViewHolder holder, int position) { 

    final ItemObject currentScript = scriptObjects.get(position); 

    holder.scriptName.setText(currentScript.getScriptName()); 
    holder.scriptDate.setText(currentScript.getScriptDate()); 
    holder.scriptUser.setText(currentScript.getScriptUser()); 

    String whichformat = currentScript.getScriptFormat(); 
    switch (whichformat) { 
     case "PDF": 
      imagename = "ic_picture_as_pdf_black_24dp.png"; 
     case "Word": 
      imagename = "ic_insert_drive_file_black_24dp.png"; 
     case "Image": 
      imagename = "ic_photo_library_black_24dp.png"; 
    } 

    int resourceId = context.getResources().getIdentifier(imagename, null , null); 
    holder.scriptIcon.setImageDrawable(ContextCompat.getDrawable(context, resourceId)); 

ich einen Fehler:

FATAL AUSNAHME: Haupt Prozess: com.ndlp.socialstudy, PID: 3481 android.content.res.Resources $ NotFoundException: Ressourcen-ID # 0x0

und es verweist auf meine Recycler Adapterklasse und zu:

holder.scriptIcon.setImageDrawable(ContextCompat.getDrawable(context, resourceId)); 

wissen Sie wha t Ich habe falsch gemacht? Die Bildnamen wie im Schalter sind richtig, ich habe sie bereits überprüft.

ich auch schon versucht:

int resourceId = context.getResources().getIdentifier(imageName, "drawable" , context.getPackageName()); 

Mit freundlichen Grüßen

hellownero

Antwort

0

Sie sollten resourceId diese Weise erhalten:

switch (whichformat) { 
     case "PDF": 
      imagename = "ic_picture_as_pdf_black_24dp"; 
     case "Word": 
      imagename = "ic_insert_drive_file_black_24dp"; 
     case "Image": 
      imagename = "ic_photo_library_black_24dp"; 
} 

int resourceId = context.getResources().getIdentifier(imagename, "drawable", context.getPackageName()); 

Sie diese Ausnahme bekam, weil Sie null passieren als defType und packageName. Sie müssen den Dateityp nicht als Bildnamen übergeben.

+0

Vielen Dank für Ihre Zeit schätzen es sehr, aber ich habe es bereits versucht (siehe meine Bearbeitung am unteren Rand) und der Fehler bleibt gleich ... –

+0

@PatrickNadler hast du versucht, '.png' vom Ende des zu entfernen Dateiname? –

+0

Danke, es funktioniert irgendwie, aber das Bild, das angezeigt wird, ist immer das Bibliotheksbild, selbst mit Artikeln, die die Zeichenkette PDF haben, haben Sie irgendwelche Vorschläge, wie man das löst? –

Verwandte Themen