Bläddra fram och tillbaka funktion i en Arraylist
Hej!
Jag vet inte hur jag ska gå tillväga med att visa de index positioner som jag bläddrar igenom i min Arraylist.
Jag har deklarerat instans variablen "int index = 0". Jag har en klass som heter student som ska returnera namn, efternamn och användarnamn för studenter.
Jag får en error på raden "taStudenter.setText(studentArray.get(index));" om att "student" inte kan konverteras till "String".
Så här ser min kod ut:
private void btnBackMouseClicked(java.awt.event.MouseEvent evt) {
if (index == 0) {
index = studentArray.size() - 1;
taStudenter.setText(studentArray.get(index));
index--;
} else {
taStudenter.setText(studentArray.get(index));
index--;
}
}
Min logik var:
om (if) index == 0
index = arraylist.size() - 1
hämta studenten på den index positionen och visa den
räkna ner index med 1 (index--)
annars (else)
hämta studenten på den index positionen och visa den
räkna ner index med 1 (index--)
Hur ska jag gå tillväga med att hämta studenten på den index positionen och visa den? Har jag ens tänkt rätt?
Problemet är alltså att du inte kan konvertera studentArray.get(index) till en sträng. Vad är det du vill ska visas i taStudenter? Namnet på studenten? Är det namnet som är lagrat i studentArray? Eller vad är lagrat där?
I arrayen är det student namn som är lagrade och jag vill att studentens namn ska visas i min textarea (taStudenter) när användaren trycker på bläddra knappen. Det vill säga studenten som ligger på index positionen 0 och sedan 1 och 2, varje gång användaren trycker på bläddra.
Så är det strängar som är lagrade i studentArray?
public class StudenList extends javax.swing.JFrame {
public ArrayList<student> studentArray;
int index = 0;
public StudenList() {
initComponents();
studentArray = new ArrayList<student>();
studentArray.add(new student("Oscar", "Bäck"));
studentArray.add(new student("Karin", "Bowder"));
studentArray.add(new student("Lucas", "Sallomy"));
fylltext();
}
Det här är vad som är lagrat just nu.
Okej, då är det alltså objekt av typen student som är lagrade i arrayen.
Då måste du hämta ut namnen på studenten på något sätt när du vill presentera den i textfältet. Har du någon metod på klassen student som gör att du kan hämta ut namnet på studenten?
Jag har en get metod som hämtar studentens namn, efternamn och användarnamn. Jag får dock inte använda for eller for each loopar för den här uppgiften. Jag får endast använda Iterator.
Hmm, konstig begränsning, en for each loop är bara ett smidigt sätt att använda iterators på.
Men hursomhelst, du måste ju då ändra raden
taStudenter.setText(studentArray.get(index).getNamnetPåStudenten());
Det är också en bra praxis att försöka att inte upprepa kod. Så den kod du skrivit i början kan skrivas om som
private void btnBackMouseClicked(java.awt.event.MouseEvent evt) {
if (index == 0) {
index = studentArray.size() - 1;
}
taStudenter.setText(studentArray.get(index).getNamnetPåStudenten());
index--;
}
Om du får det att fungera så märker du nog också att det finns en liten brist i logiken.
Jag fick det att funka men den bläddrar bara mellan två av mina objekt. Är det den bristande logiken?
Ja det är bristande logiken. Det första elementet i en array har index 0. Så din koll "if (index == 0)" kollar om man är på första studenten, inte om man har passerat första studenten.
"index == -1" borde fixa det. Tusen tack för din hjälp.