如何使用自定义类添加数组列表

时间:2018-03-10 08:08:35

标签: android arrays string class

我创建了一个如下所示的数组列表。但我不想输入这样的值。相反,我想从资源中使用数组列表。

sArrayList=new ArrayList<Employee>();
    sArrayList.add(new Empl("ABC", 24));
    sArrayList.add(new Empl("ACB", 24));
    sArrayList.add(new Empl("BVF", 28));
    sArrayList.add(new Empl("BRT", 28));
    sArrayList.add(new Empl("ANM", 23));

这是我的自定义类

public class Empl {

     private String name;
     private int age;

     public  Empl(String name,int age){
      this.name = name;
      this.age = age;
     }    
     public String getName(){
      return name;
     }    
     public int getAge(){
      return age;
     }
    }

我的字符串数组如下:

  <string-array name="story_name_array">
        <item>To Build a Fire</item>
        <item>The Gift of the Magi</item>
        <item>The Winepress</item>
        <item>"THE BET"</item>
        <item>"The Boarded Window"</item>
        <item>"A Coward"</item>
</string-array>
<integer-array name="num">
    <item>1</item>
    <item>2</item>
    <item>3</item>
    <item>4</item>
    <item>5</item>
    <item>6</item>
</string-array>

现在如何使用自定义类在arraylist中添加字符串数组资源的值?

3 个答案:

答案 0 :(得分:0)

使用从资源访问数组。

String[] myStrings =
    getResources().getStringArray(R.array.story_name_array);

String[] myNum =
    getResources().getIntArray(R.array.num);

现在循环第一个或第二个数组(注意相同的大小)。

之后创建对象并将它们添加到循环中。

答案 1 :(得分:0)

 String[]  nameArray = getResources().getStringArray(R.array.story_name_array); // for getting the array from resources
 String[] ageArray   = getResources().getStringArray(R.array.num); 

 for(int i =0; i<nameArray.length; i++) 
     sArrayList.add(new Empl(nameArray[i] , Integer.valueOf(ageArray[i]) )); // for adding it to your sArrayList

尝试以上解决方案。

答案 2 :(得分:0)

ArrayList<Empl> empls = new ArrayList<Empl>()

String[] names = getResources().getStringArray(R.array.story_name_array);
String[] numbers = getResources().getStringArray(R.array.num);

if(names.length == numbers.length) {
    for(int i=0; i<names.length; i++) {
        empls.add(new Empl(names[i],Integer.valueOf(numbers[i]));
    }
} else {
    Log.d(" Names and number array size does not match!");
}