2017-10-05 12 views
-4

私は共有設定からデータを取得:のArrayListへのArrayList <String>を入れ、<カスタムオブジェクト>

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

のように見えます:私は文字列の配列にそれをsplitt

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(","); 

今度は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の値をカスタムオブジェクト配列に配置するにはどうすればよいですか? 私は、コンストラクタ、ゲッタ、セッタを持つ1つのオブジェクトクラスを持っています。

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

私は私をソートしますArrayListを作成し、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

あなたがから文字列の同じサイズを持っているので学生に学生

+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

からの変更モデルクラス名を

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

このコードを試してみてください:

あなたがループの回数として分割された文字列の長さを使用することができます

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

:あなたから得ることができる10

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

あなたの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); 
} 

サイドノート:

は、代わりに文字列のための単一の好みのエントリを使用して、あなたはSharedPreferenceにオブジェクトを保存するためにGsonを使用することができますhttps://stackoverflow.com/a/38089938/4758255

で続きを読みます
関連する問題