2014-10-28 2 views
-1

Я попытался объявить массив с элементами, который имеет свойство type="id"Как создать массив уникальных идентификаторов Android?

<item name="viewpager_id_base" type="id"/> 
<integer-array name="viewpager_dates" type="id"> 
    <item type="id">0</item> 
    <item type="id">1</item> 
    <item type="id">2</item> 
    <item type="id">3</item> 
    <item type="id">4</item> 
    <item type="id">5</item> 
    <item type="id">6</item> 
    <item type="id">7</item> 
    <item type="id">8</item> 
    <item type="id">9</item> 
    <item type="id">10</item> 

</integer-array> 

Но идентификатор не создается идентификаторами в R файле. Только идентификатор для viewpager_id_base appiared

+0

, что вы хотите достичь с помощью этого? ** Будьте ясны с вами. ** –

ответ

1

кажется, что вы не можете сделать это в XML-файл. попробовать это:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <item name="id1" type="id"/> 
    <item name="id2" type="id"/> 
    <item name="id3" type="id"/> 
    <item name="id4" type="id"/> 
    <item name="id5" type="id"/> 
</resources> 

и в коде Java:

int[] idArrays = new int[]{R.id.id1, R.id.id2, R.id.id3, R.id.id4, R.id.id5} ; 
+0

Не ecxactly простенькая вещь, но она работает :) – Yarh

1

Используйте код ниже:

<string name="earth">Earth</string> 
<string name="moon">Moon</string> 

<string-array name="system"> 
    <item>@string/earth</item> 
    <item>@string/moon</item> 
</string-array> 

см ссылку ниже для получения дополнительной информации: -

Referencing a string in a string array resource with xml

+0

Мне нравится этот подход, и он работает со строкой. Но я не могу ссылаться на 'item' как @ item/day1. Знаете ли вы возможное обходное решение? – Yarh

2

Я знаю, что этот вопрос был давно, но кто-то может найти мой ответ полезным.

Пример XML:

<resources> 
    <item name="first_id" type="id" /> 
    <item name="second_id" type="id" /> 
    <item name="third_id" type="id" /> 

    <array name="default_ids"> 
     <item>@id/first_id</item> 
     <item>@id/second_id</item> 
     <item>@id/third_id</item> 
    </array> 
</resources> 

Получение массива идентификаторов:

TypedArray typedArray = getResources().obtainTypedArray(R.array.default_menu_ids); 
int[] ids = new int[typedArray.length()]; 
for(int ind=0; ind<typedArray.length(); ind++){ 
    ids[ind] = typedArray.getResourceId(ind,0); 
} 

typedArray.recycle(); 

Второй аргумент getResourceId по умолчанию идентификатор в случае, если вы испортили что-то.

(Честно говоря, я не знаю, почему люди downvoted этот вопрос. Вопрос очень ясно.)

Смежные вопросы