2017-10-05 43 views
-4

我從共享偏好得到的數據:把一個ArrayList <String>到一個ArrayList <自定義對象>

SharedPreferences sharedPref = ImageListViewActivity.this.getSharedPreferences("settings",Context.MODE_PRIVATE; 
String MyString1 = sharedPref.getString("MyPackage.NameOfSharedPref",null); 
String MyString2 = sharedPref.getString("MyPackage.NameOfSharedPref",null); 
String MyString3 = sharedPref.getString("MyPackage.NameOfSharedPref",null); 

它看起來像:

MyString1 = "Ben, David, Tom, Jessica" 
MyString2 = "25, 27, 21, 22" 
MyString3 = "male, male, male, female" 

我splitt它轉換成String數組:

String[] splitt1 = MyString1.split(","); 
String[] splitt2 = MyString2.split(","); 
String[] splitt3 = MyString3.split(","); 

現在我把它放入ArrayList中:

ArrayList<String> arrayList1 = new ArrayList<String>(); 
for (int i = 0; i < MyString1.length; i++) { 
    arrayList1 .add(MyString1[i]); 
} 

ArrayList<String> arrayList2 = new ArrayList<String>(); 
for (int i = 0; i < MyString2.length; i++) { 
    arrayList2 .add(MyString2[i]); 
} 

ArrayList<String> arrayList3 = new ArrayList<String>(); 
for (int i = 0; i < MyString3.length; i++) { 
    arrayList3 .add(MyString3[i]); 
} 

如何將ArrayList的值放入自定義對象數組中? 我有一個對象類與構造函數,getters和setters。

public class Student { 
    private String Name; 
    private String Age; 
    private String Sex; 

    public Student(String name, String age, String sex) { 
    this.Name = name; 
    this.Age = age; 
    this.Sex = sex; 
    } 

    public String getName() { 
    return Name; 
    } 

    public void setName(String artikelnummer) { 
    Name = name; 
    } 

    public String getAge() { 
    return Age; 
    } 

    public void setAge(String artikelnummer) { 
    Age = age; 
    } 

    public String getSex() { 
    return sex; 
    } 

    public void setSex(String artikelnummer) { 
    Sex = sex; 
    } 

現在我要填補我的學生對象數組,我想這樣,但是這是我的字符串數組,我填寫並不起作用:

ArrayList<Students> peopleList = new ArrayList<>(); 

for (int i = 0; i < splitt1.length; i++) { 
    peoplelist.add(splitt1[i]); 
} 

我想我的排序ArrayLists並將它們寫入ObjectArrayList,如下所示:

Student Stu1 = new Student("Ben","25","male"); 
Student Stu2 = new Student("David","27","male"); 
Student Stu3 = new Student("Tom","21","male"); 
Student Stu4 = new Student("Jessica","22","female"); 

請幫助我,謝謝您的期待!

回答

1

試試這個代碼

ArrayList<Student> peopleList = new ArrayList<>(); 

    for (int i = 0; i < splitt1.length; i++) { 
     Student Student = new Student(splitt1[i],splitt2[i],splitt[i]); 
     peoplelist.add(Student); 
    } 

變化從學生模型類名學生

+0

thx很多,工作正常! Thx爲所有的快速答案! :) – David

1

您必須創建一個Student對象,例如,

for (int i = 0; i < splitt1.length; i++) { 
    String name = splitt1[i].trim(); remove whitespaces 
    String age = splitt2[i].trim(); remove whitespaces 
    String gender = splitt3[i].trim(); remove whitespaces 
    peoplelist.add(new Student(name, age, gender)); 
} 

這將解決您的問題到現在爲止。您必須記住,您的ArrayList的長度必須完全相同,否則您將獲得IndexOutOfBondException

0

使用本

ArrayList<String> arrayList1 = new ArrayList<String>(); 
    for (int i = 0; i < splitt1.length; i++) { 
     arrayList1 .add(splitt1[i]); 
    } 

ArrayList<String> arrayList2 = new ArrayList<String>(); 
    for (int i = 0; i < splitt2.length; i++) { 
     arrayList2 .add(splitt2[i]); 
    } 

ArrayList<String> arrayList3 = new ArrayList<String>(); 
    for (int i = 0; i < splitt3.length; i++) { 
     arrayList3 .add(splitt3[i]); 
    } 
1

因爲你的字符串從同一尺寸:

MyString1 = "Ben, David, Tom, Jessica" 
MyString2 = "25, 27, 21, 22" 
MyString3 = "male, male, male, female" 

,你可以得到:

String[] splitt1 = MyString1.split(","); 
String[] splitt2 = MyString2.split(","); 
String[] splitt3 = MyString3.split(","); 

您可以使用分割後的字符串的長度作爲for循環計數。

您需要從StudentsPOJO創建學生名單(它應該是Student來描述一個物體)。從你的pojo,你有一個構造函數:

public Student(String name, String age, String sex) { 
    ... 
} 

所以,你可以用它來創建Student對象。因此,您可以使用下面的代碼:

List<Students> students = new ArrayList<>(); 
// using splitt1.length - 1 because index is starting from zero for list. 
for (int i = 0; i < splitt1.length - 1; i++) { 
    // use .trim() for removing extra whitespace. 
    Students student = new Student(splitt1[i].trim(), splitt2[i].trim(), splitt3[i].trim()); 
    students.add(student); 
} 

旁註:

代替爲字符串單偏好項,你可以使用GSON對象保存到SharedPreference在https://stackoverflow.com/a/38089938/4758255

閱讀更多
相關問題