【问题标题】:How to use resource arrays using xml in Android?如何在 Android 中通过 xml 使用资源数组?
【发布时间】:2013-05-13 01:25:44
【问题描述】:

我是 Android 开发新手,在管理 Android 资源方面遇到问题。我想用 ImageView 和 TextView 创建一个 listView。

以下是我的实现,效果很好,但实际上我想使用我之前创建的数组,如下所示:

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"

【问题讨论】:

  • 您可以按照以下示例在数组中使用颜色:stackoverflow.com/a/17584066/560600
  • 嗨 Jannis,您是否发现任何给定的答案对解决您的问题有用?如果是这样,请考虑将答案标记为已接受。您的小动作将帮助其他人找到类似问题的解决方案。

标签: android xml arrays resources


【解决方案1】:

创建如下所示的 XML 并将其放入 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>

然后使用这样的代码:

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);

来源:http://developer.android.com/guide/topics/resources/more-resources.html

【讨论】:

  • 使用后别忘了给iconscolorsrecycle()打电话。
【解决方案2】:

您可以使用来自res/values/arrays.xml的资源。

对于drawables

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

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

对于colors

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

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

对于strings

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

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

Plurals:

<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 count = 117
val proposals = count.takeIf { it != 0 }?.let {
    resources.getQuantityString(R.plurals.proposal_plurals, it, it)
} ?: "No proposals"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多