it-swarm.com.de

Legen Sie eine Zeichnung als Hintergrund programmgesteuert fest

BEARBEITEN: Tut mir leid, ich weiß aus Ihrem Kommentar, meine Frage war nicht klar genug. Ich werde einen neuen posten. Entschuldigung dafür und vielen Dank für Ihre Antworten

Ich fülle eine Listenansicht aus einer Json-Datei auf .. Mit meinem Listenadapter kann ich jeder Zeile meiner Liste problemlos die entsprechenden Json-Daten zuweisen. Das funktioniert gut für Text, zum Beispiel: 

TextView tv = (TextView)ll.findViewById(R.id.descView);   
tv.setText(i.desc);

Mit dem obigen Code wird jede Zeile korrekt mit den guten Json-Daten gefüllt.

Ich kann jedoch nicht dasselbe für ein Bild machen. Ich habe versucht, das richtige Bild aus meinen Json-Daten mit folgender Einstellung zu setzen:

ImageView iv = (ImageView)ll.findViewById(R.id.imgView);           
iv.setBackgroundDrawable(context.getResources().getDrawable(i.img));

Ich schätze, ich mache etwas falsch mit dem Typ meiner Parameter: "setBackgroundDrawable" erfordert einen drawbaren Parameter . "GetDrawable" erfordert ein int . Ich habe den Typ meines Feldes img auf int gesetzt, aber das ist nicht der Fall funktioniert nicht.

Irgendeine Idee warum?

Mein Listenadapter:

public class adapter extends ArrayAdapter<ListItems> {

int resource;
String response;
Context context;

//Initialize adapter
public ListItemsAdapter(Context context, int resource, List<ListItems> items) {
    super(context, resource, items);
    this.resource=resource; 
}     

@Override
public View getView(int position, View convertView, ViewGroup parent)
{

    //Get the current object
    ListItems i = getItem(position);

    //Inflate the view
    if(convertView==null)
    {
        ll = new LinearLayout(getContext());
        String inflater = Context.LAYOUT_INFLATER_SERVICE;
        LayoutInflater li;
        li = (LayoutInflater)getContext().getSystemService(inflater);
        li.inflate(resource, ll, true);
    }
    else
    {
        ll = (LinearLayout) convertView;
    }

    //For the message
    TextView tv = (TextView)ll.findViewById(R.id.descView);
    tv.setText(i.desc);

// For the Img
    ImageView iv = (ImageView)ll.findViewById(R.id.imgView);
    iv.setBackgroundDrawable(context.getResources().getDrawable(i.img));

    return ll;
}

meine Artikelklasse:

    public class ListItems{
int id;
int img;    
String desc;}

Und ein Beispiel meiner Json-Datei:

    [{"id":10001,"img":e1,"desc":"desc1"},
    {"id":10002,"img":e2,"desc":"desc2"},
    {"id":10003,"img":e3,"desc":"desc3"}]
13
Don

Versuche dies

iv.setBackgroundDrawable(context.getResources().getDrawable(R.drawable.img));

oder 

iv.setBackgroundResource(R.drawable.img);
40
peter

Da nun getDrawable und setBackgroundDrawable beide depricated sind, sollten Sie drawable als Hintergrund wie folgt festlegen:

view.setBackground(ContextCompat.getDrawable(this, R.drawable.your_drawable)); 

und wenn Sie minSdk unter 16 anstreben, machen Sie einen Check wie folgt:

if (Android.os.Build.VERSION.SDK_INT < Android.os.Build.VERSION_CODES.JELLY_BEAN) {
        view.setBackgroundDrawable(ContextCompat.getDrawable(this, R.drawable.your_drawable));
    } else {
        view.setBackground(ContextCompat.getDrawable(this, R.drawable.your_drawable));
    }
10
Kapil Rajput

Hier die neue Methode

recyclerView.setBackgroundResource (R.drawable.edit_text_button_shape);

verwenden Sie dies nicht. Dies ist eine alte Methode recyclerView.setBackgroundDrawable (this.getResources (). getDrawable (edit_text_button_shape));

0
Black_Dreams