tabelka - pobieranie danych

0

Witam.. początki i kolejny problem.. Wczytuje sobie dane do tabelki poprzez model (w modelu rzutowanie obiektów na Faktura). mam mouseclicka na wiersz, który wyciąga zawartość jednej komórki (numer faktury), wysyła do metody i inne dane wskakują poprzez model do drugiej tabelki. poniżej kod mouse clicka

        int wiersz = this.TabelaFakturKlienta.getSelectedRow();
        int kolumna = 1;
        String fakt = (String)this.TabelaFakturKlienta.getValueAt(wiersz,kolumna);
        System.out.println("numer: " + fakt);
        ArrayList listaSzczegolow = this.aSilnik.pobierzSzczegolyFaktury(fakt);
        this.TabelaSzczegolowFaktury.setModel(new ModelSzczegolowFaktury(listaSzczegolow)); 

a to kawałek metody wyciągającej odpowiednie dane. metoda bierze numerek i binarysearch wyszukuje w posortowanej liscie fakturp daną fakture, w pętli przewijam na początek i drugą pętlą odczytuje po kolei faktury i dodaje pola do nowej listy. poniżej kod:

 public ArrayList pobierzSzczegolyFaktury(String fakt)
    {
        ArrayList listaSzczegolowFaktury = new ArrayList();
        Fakturap bleble = new Fakturap(fakt);
        int pozycja = Collections.binarySearch(this.listaFakturP, bleble);

Konstruktor z klasy Fakturap

    public Fakturap(String fakt)
    {
        this.faktura=fakt;
    }

Wyczytałem że dane w komórkach tabelki wyciągane są jako obiekty. Problem polega na tym że nie zgadzają mi się typy. Nie wiem jak to wykombinować. Potrzebuje obiekt typu Fakturap dla binarysearcha. Na niskich numerach klientów binarysearch zwraca -1, a na wysokich wywala przekroczenie zakresu.
Dodam że jak w mouseclicku wpisze z palca numer faktury to wszystko działa.

0

Searches the specified list for the specified object using the binary search algorithm. The list must be sorted into ascending order according to the natural ordering of its elements (as by the sort(List) method, above) prior to making this call. If it is not sorted, the results are undefined. If the list contains multiple elements equal to the specified object, there is no guarantee which one will be found.
....
ClassCastException - if the list contains elements that are not mutually comparable (for example, strings and integers), or the search key in not mutually comparable with the elements of the list

Trzy rzeczy:

  • sprawdź czy this.listaFakturP, zawiera obiekty Fakturap
  • sprawdź czy lista jest posortowana
  • sprawdź czy Fakturap implementuje interfejs Comparable
0

no właśnie te rzeczy które wymieniłeś są ok, bo jak zrobie, po utworzeniu tej listy, fora to wszystkie dane wyświetla poprawnie..

0

yy....

public ArrayList pobierzSzczegolyFaktury(String fakt)
    {
        ArrayList listaSzczegolowFaktury = new ArrayList(); // a tu się pusta lista robi, po co ?
        Fakturap bleble = new Fakturap(fakt);
        int pozycja = Collections.binarySearch(this.listaFakturP, bleble);// co to jest this.listaFakturP,     //jak jest tworzona
0

dalej jest pętla uzupełniająca listeSzczegółow...
a lista fakturp tworzy się podczasz parsowania pliku xml. i na pewno nie jest pusta

0

Hm... to rzeczywiście dziwne, bo wyczerpują się moje zasoby błędów mniej i bardziej banalnych. Weź jeszcze spróbuj przeklikać się przez kod z debugerem. Może jest coś co Ci umknęło, a w kodze tak wprost nie widać.

0

zaczełem obstawiać binarysearch.. bo ciągle zwraca pozycje -1... a to niekorzystnie.
tylko nie wiem co tam może być nie tak...

0

problem rozwiązany :) lista szczegółów składa się z pól z kilku list.. i jak pointer z pętli wyskakiwał poza zakres jakiejś listy to program się wysypywał...

0

hehehe... wniosek. Używać debuggera.

0

no właśnie.. nie umiem go używać... [wstyd].. próbowałem ale coś mi nie wychodzi.. dlatego przeglądałem kod po linijce :/

1 użytkowników online, w tym zalogowanych: 0, gości: 1