简体   繁体   中英

Put an ArrayList<String> into an ArrayList<Custom Object>

I get data from shared preferences:

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

It looks like:

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

I splitt it into String Arrays:

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

Now I put it into an 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]);
}

How can I put the values of the ArrayList into a custom Object Array? I have one object class with constructor, getters and 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;
  }

Now I want to fill my Student Object Array, I tried this way, but this is my String Arrays that I fill and it doesn't work:

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

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

I want to sort my ArrayLists and write them into an ObjectArrayList like this:

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

Please Help me, thank you in anticipation!

You have to create a Student object eg

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

This will solve your issue as of now. You have to keep in mind that the length of your ArrayList has to be the exactly the same otherwise you will get IndexOutOfBondException .

Try this code

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

change the model class name from Students to Student

Because you have the same size of the string from:

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

Which you can get from:

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

You can use the length of the splitted String as the for loop count.

You need to create the Student list from your Students pojo (it should be Student to describe a single object). From your pojo, you have a constructor:

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

So, you can use it to create the Student object. Therefore, you can use the following code:

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

Side note:

Instead using single preference entry for the string, you can use Gson to save the object to the SharedPreference read more at https://stackoverflow.com/a/38089938/4758255

use this

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM