0

I am learning java. I have a problem with arraylist.
I added codes. can you help me please?
I created a model class and its name is file.
Also, I added setters and getters.
I created an object of this class in the main activity and its name is "saved".
I added some elements in the arraylist.
But when I write the arraylist, all of the elements are the last added elements.

''' 
public class file {

String language;
String targetLanguage;
int grade;

public String getLanguage() {
    return language;
}

public void setLanguage(String language) {
    this.language = language;
}

public String getTargetLanguage() {
    return targetLanguage;
}

public void setTargetLanguage(String targetLanguage) {
    this.targetLanguage = targetLanguage;
}

public int getGrade() {
    return grade;
}

public void setGrade(int grade) {
    this.grade = grade;
}
} 



public class MainActivity extends AppCompatActivity {

ArrayList<file> array = new ArrayList<>();
dosya saved =new file();


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    saved.setLanguage("English");
    saved.setTargetLanguage("Turkish");
    saved.setGrade(10);
    array.add(saved);

    saved.setLanguage("Spanish");
    saved.setTargetLanguage("French");
    saved.setGrade(20);
    array.add(saved);

    saved.setLanguage("Italian");
    saved.setTargetLanguage("Finnish");
    saved.setGrade(30);
    array.add(saved);


    Log.d("result 1", array.get(0).getLanguage());
    Log.d("result 2", array.get(1).getLanguage());
    Log.d("result 3", String.valueOf(array.get(2).getLanguage()));

}
}
'''

results: result 1: Italian result 2: Italian result 3: Italian

Thank in advance

1
  • As good practice, the first letter of a class name should be uppercase. Moreover, many libraries have a class "File", it is a common name. You can consider putting your File into a new package to reduce the probability of importing the wrong File class when using it in other places in your code. Commented Apr 21, 2020 at 9:41

1 Answer 1

1

You are storing the reference in List, create new saved object before adding to List

List<file> array = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    dosya saved =new file();
    saved.setLanguage("English");
    saved.setTargetLanguage("Turkish");
    saved.setGrade(10);
    array.add(saved);

    saved =new file();
    saved.setLanguage("Spanish");
    saved.setTargetLanguage("French");
    saved.setGrade(20);
    array.add(saved);
    saved =new file();
    saved.setLanguage("Italian");
    saved.setTargetLanguage("Finnish");
    saved.setGrade(30);
    array.add(saved);


    Log.d("result 1", array.get(0).getLanguage());
    Log.d("result 2", array.get(1).getLanguage());
    Log.d("result 3", String.valueOf(array.get(2).getLanguage()));

}
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.