Нет никакого способа непосредственно использовать класс C++ в коде C#. Можно использовать PInvoke косвенным способом получить доступ типу.
основной шаблон - то, что для каждой функции членства в классе Foo, создайте связанную функцию лица, не являющегося членом какой-либо организации, которая звонит в функцию членства.
class Foo {
public:
int Bar();
};
extern "C" Foo* Foo_Create() { return new Foo(); }
extern "C" int Foo_Bar(Foo* pFoo) { return pFoo->Bar(); }
extern "C" void Foo_Delete(Foo* pFoo) { delete pFoo; }
Теперь это - вопрос PInvoking эти методы в Ваш код C#
[DllImport("Foo.dll")]
public static extern IntPtr Foo_Create();
[DllImport("Foo.dll")]
public static extern int Foo_Bar(IntPtr value);
[DllImport("Foo.dll")]
public static extern void Foo_Delete(IntPtr value);
, оборотная сторона, у Вас будет неловкий IntPtr для раздавания, но это - несколько простой вопрос для создания класса обертки C# вокруг этого указателя для создания более применимой модели.
, Даже если Вы не владеете этим кодом, можно создать другой DLL, который обертывает исходный DLL и обеспечивает небольшой уровень PInvoke.
Используйте Arrays.asList :
String[] myResArray = getResources().getStringArray(R.array.my_array);
List<String> myResArrayList = Arrays.asList(myResArray);
Этот список будет неизменным, поэтому, если вам нужен изменяемый список, просто выполните:
List<String> myResMutableList = new ArrayList<String>(myResArrayList);
Я сделал это следующим образом:
string.xml:
Определить Массив строк :
<string-array name="my_string_array">
<item>Test 1</item>
<item>Test 2</item>
<item>Test 3</item>
<item>Test 4</item>
<item>Test 5</item>
<item>Test 6</item>
</string-array>
В Activity.class / Fragment.class :
List<String> myArrayList = Arrays.asList(getResources().getStringArray(R.array.my_string_array));
Готово
Модификация ответа Клауса, чтобы получить ArrayList<String>
:
ArrayList<String> myResArrayList = new ArrayList<String>();
Resources res = getResources();
Collections.addAll(myResArrayList, res.getStringArray(R.array.myResArray));
Не совсем уверен, что вы хотите, но это может быть стоит прочитать: http://developer.android.com/guide/topics/resources/string-resource.html
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="planets_array">
<item>Mercury</item>
<item>Venus</item>
<item>Earth</item>
<item>Mars</item>
</string-array>
</resources>
Как получить массив в вашем приложении с помощью кода:
Resources res = getResources();
String[] planets = res.getStringArray(R.array.planets_array);
Price_array in strings.xml is assigned to Arraylist
private ArrayList<String> price_unit;
price_unit= new ArrayList<String>(Arrays.asList(getResources().getStringArray(R.array.Price_array)));