web-dev-qa-db-fra.com

Comment utiliser les tableaux de ressources en utilisant XML dans Android?

Je suis nouveau dans le développement Android et je fais face à un problème de gestion des ressources Android. Je veux créer une listView avec une ImageView et une TextView).

Voici mon implémentation qui fonctionne bien, mais en fait, je voulais utiliser des tableaux que j'ai créés auparavant comme ceci:

int[] img = getResources().getIntArray(R.Array.img);
package com.simplelistviewwithlistactivity;

import Android.app.AlertDialog;
import Android.app.AlertDialog.Builder;
import Android.app.ListActivity;
import Android.os.Bundle;
import Android.view.Menu;
import Android.view.View;
import Android.widget.ListView;

public class ListActivityS extends ListActivity {
    int[] img = { R.drawable.r1, R.drawable.r2, R.drawable.skycubemap1,
            R.drawable.skycubemap1, R.drawable.skycubemap2,
            R.drawable.skycubemap3, R.drawable.skycubemap4,
            R.drawable.skycubemap5 };

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getListView().setDividerHeight(2);
        getListView().setAdapter(new BindDataAdapter(this, img, item));
    }

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Builder builder = new AlertDialog.Builder(this);
        builder.setMessage(item[position] + " is clicked.");
        builder.setPositiveButton("OK", null);
        builder.show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_list, menu);
        return true;
    }

    private String item[] = { "This is list Item1", "This is list Item2",
            "This is list Item3", "This is list Item4", "This is list Item5",
            "This is list Item6", "This is list Item8", "This is list Item8"
16
Jannis Gasmi

Créez un XML comme ci-dessous et mettez-le dans res/values ​​/ arrays.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <array name="icons">
        <item>@drawable/home</item>
        <item>@drawable/settings</item>
        <item>@drawable/logout</item>
    </array>
    <array name="colors">
        <item>#FFFF0000</item>
        <item>#FF00FF00</item>
        <item>#FF0000FF</item>
    </array>
</resources>

Utilisez ensuite du code comme celui-ci:

Resources res = getResources();
TypedArray icons = res.obtainTypedArray(R.array.icons);
Drawable drawable = icons.getDrawable(0);

TypedArray colors = res.obtainTypedArray(R.array.colors);
int color = colors.getColor(0,0);

Source: http://developer.Android.com/guide/topics/resources/more-resources.html

37
Fraggle

Vous pouvez utiliser les ressources de res/values/arrays.xml.

Pour drawables

<integer-array name="your_images">
    <item>@drawable/ic_active_image</item>
    <item>@drawable/ic_visited_image</item>
</integer-array>

val drawables = resources.obtainTypedArray(R.array.your_images)
val drawable = drawables.getResourceId(position, -1)
image.setImageResource(drawable)
drawables.recycle()

Pour couleurs

<array name="your_colors">
    <item>#365374</item>
    <item>#00B9FF</item>
</array>

val colors = resources.obtainTypedArray(R.array.your_colors)
val color = colors.getColor(position, -1)
title.setTextColor(color)
colors.recycle()

Pour chaînes

<string-array name="your_strings">
    <item>Active</item>
    <item>Visited</item>
</string-array>

val strings = resources.getStringArray(R.array.your_strings)
title.text = strings[position]

Pluriels :

<plurals name="proposal_plurals">
    <item quantity="zero">No proposals</item>
    <item quantity="one">%1$d proposal</item>
    <item quantity="two">%1$d proposals</item>
    <item quantity="few">%1$d proposals</item>
    <item quantity="many">%1$d proposals</item>
    <item quantity="other">%1$d proposals</item>
</plurals>

val proposals = count.takeIf { it != 0 }?.let {
    resources.getQuantityString(R.plurals.proposal_plurals, it, it)
} ?: "No proposals available"
9
CoolMind