ich eine benutzerdefinierte Klasse erstellt haben Song
genannt, die 3 String
Variablen enthält, eine int
Variable und eine ArrayList
von String
Artikel.Android Arraylist von String-Objekte Größe bei 0 bleibt trotz ihm hinzufügen
Jetzt habe ich die richtigen Getters und Setter für alle Variablen und solche, aber das Problem ist, dass, wenn ich etwas der ArrayList
Variable zuweisen und versuchen, später darauf zuzugreifen, wirft es einen IndexOutOfBounds
Fehler wegen der Größe von es ist 0. Unten ist der Code in Frage.
Ist es möglich, dass ich die Variable nicht richtig zuweisst oder möglicherweise ihren Speicherort durch das Löschen verändert?
Wichtiger Hinweis: Ich kann auf die Werte der anderen Variablen zugreifen und sie drucken, aber die ArrayList
Variable ist die einzige, die fehlschlägt.
SongClass.java
@Parcel
public class SongClass {
//Other variables defined here
ArrayList <String> verses;
public Song() { /*Required empty bean constructor*/ }
public Song(String var1, String var2, String var3, int var4, ArrayList<String> verses)
{
this.var1= var1;
this.var2= var2;
this.var3= var3;
this.var4= var4;
this.verses = verses;
}
//Getters and Setters below
SongReader.java
//Use to store a collection of Song objects (multiple songs)
private ArrayList<Song> songs = new ArrayList<>(10);
//This array will be assigned to the Song object -> verses
private ArrayList<String> verses = new ArrayList<>(10);
//Other vars to be assigned to song object (String, String, String, int)
...
songs.add(new Song(String var1, String var2, String var3, int var4, verses);
//Important note: I clear the verses `ArrayList` after assigning it to songs. Could this possibly erase it from songs?
verses.clear();
SongDisplay.java
ArrayList<Songs> songs = Parcels.unwrap(intent.getParcelableExtra("Extras"));
...
for (int i = 1; i <= songs.get(0).size(); ++i)
{
TextView textView = new TextView(this);
...
//Error is thrown here
textView.setText(songs.get(0).getVerses().get(i-1);
...
}
Ich wusste es: D Ich bin immer noch etwas Neues zu Android Entwicklung, damit ich, wenn die klare Methode es nicht sicher war, beeinflussen würde, selbst wenn es zu einem anderen übergeben wurde Klasse. –
Oh, und in Bezug auf deinen letzten Schnitt, hatte ich tatsächlich 'get (i-1)' anstelle von 'get (i)', aktualisiere Frage. –
Verstanden. Es ist jedoch viel klarer, i bei 0 zu starten, anstatt "i - 1" zu haben. Andere werden verwirrt sein, wenn Sie das tun, wenn sie Ihren Code lesen, und Sie könnten sich später sogar verwirren;). –