04. januar 2007 - 10:28Der er
23 kommentarer og 1 løsning
Søgning i arraylist
Hej. Jeg har en arraylist med lagervarer hvor jeg skal kunne søge på varenavn og varenummer. Har lavet en klasse (Lagervare) som bl.a. indeholder attributterne varenavn og varenummer. Jeg har en grafisk brugergrænseflade hvor der er et søgefelt og en JList hvori søgeresultatet skal udskrives. Har prøvet at løbe arrayet igennem med forskellige løkker, men det er ikke lykkedes at få det til at fungere. Er i tvivl om hvordan jeg helt præcist skal definere koden så resultatet blir vist i JListen? Har skrevet koden i framen bag søgeknappen. (Bruger JDeveloper).
Har slettet de forsøg jeg indtil videre har prøvet mig frem med, er helt på bar bund. Har bla. forsøgt mig med .equals() i en if sætning;
if( !Soegefelt.getText().equals("") ) return;
Men ved ikke helt hvad jeg skal definere i equals, den skal jo ha' at vide at det er arrayet den skal søge i, men er usikker på hvordan? Bagefter skal den så skrive den fundne søgte vare ud i JListen?
Jo det kunne det godt være, men kan stadig ikke få sat det sammen så det fungerer... Jeg er meget ny i Java - nok derfor...;-) Du kunne vel ikke gi' et eksempel?
Lyder super! Ser frem til en løsning i aften. Ikke for at stresse dig, men skulle helst gerne kunne bruge det i aften hvis det kan lade sig gøre... På forhånd tak.
Jeg har prøvet mig lidt frem med din ovenstående kode. Det kan godt se ud til at kunne virke som jeg ønsker. Men kan du hjælpe mig til at definere at søgeteksten skal hentes fra JSoegefelt og resultatet skal skrives ud i JList1? Jeg takker på forhånd for hjælpen! P.S. Det vil være helt kanon hvis du kan hjælpe mig inden kl. 11 i morgen.
Hvis du dine to attributter som udgangspunkt er globale i den forstand at alle dine metoder i klassen kan læse dem, kan du erstatte v i contains() med JSoegefelt.getText(), og så erstatter du det sidste System.out.println med din jList1, hvor du adder det indhold du nu ønsker.
public void udskriv() { if (varearray.contains(JSoegefelt)) { System.out.println("Arraylist continas"+v.getVarenavn() ); int index = varearray.indexOf(v);
Hej Andreas. Først vil jeg lige takke for hjælpen og undskylde den sene tilbagevending. Jeg kan stadig ikke få den til at finde noget i ArrayListen og skrive det ud. Når jeg kører den, skriver den "virker ikke". Kan du se hvordan jeg skal definere at den skal søge på attributten varenummer i Lagervare og skrive søgeresultatet ud i JListen?
Den skriver virker ikke, fordi din søge tekst ikke findes i dit array "al", hvad indeholder det array egentlig? Indeholder det Strings, eller "Lagrevare" ?
Har lavet getVarenavn() og return varenavn i Lagervare klassen. Den kommer op med følgende fejl nu: Error(406,38): incompatible types; found: class java.lang.Object, required: class client.Lagervare. Fejlen referer til denne sætning: for(Lagervare vare : al)
Til info ser min Lagervare klasse således ud;
import java.io.Serializable;
public class Lagervare implements Serializable{
public String varenavn = ""; private int varenummer = 0; private String varebeskrivelse = ""; private Double salgspris = 0.0; private int lokation = 0; private int antalpaalager = 0;
public Lagervare() { } public void setVarenavn(String varenavn) { this.varenavn = varenavn; } public String getVarenavn() { return varenavn; } public void setVarenummer(int varenummer) { this.varenummer = varenummer; } public int getVarenummer() { return varenummer; } public void setVarebeskrivelse(String varebeskrivelse) { this.varebeskrivelse = varebeskrivelse; } public String getVarebeskrivelse() { return varebeskrivelse; } public void setSalgspris(Double salgspris) { this.salgspris = salgspris; } public Double getSalgspris() { return salgspris; } public void setLokation(int lokation) { this.lokation = lokation; } public int getLokation() { return lokation; } public void setAntalpaalager(int antalpaalager) { this.antalpaalager = antalpaalager; } public int getAntalpaalager() { return antalpaalager; } public String toString(){ return varenavn + " " + varenummer + " " + varebeskrivelse + " " + salgspris + " " + lokation + " " + antalpaalager; } }
Det kan godt være det er mig som roder total rundt i det, men jeg kan stadig ikke få det til at virke. Der sker ingenting når jeg trykker på søge knappen. Har lavet varearray som: ArrayList<Lagervare> al = new ArrayList<Lagervare>();
Har du husket at lave i metoden, så den tilføjer data til din liste?
Det kan godt ske du MÅSKE skal repainte dit vindue, men det jo et helt andet spørgsmål du kan oprette...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.