Problem mit Routine

Shizzl_chrizzl

Erfahrenes Mitglied
Hallo leude ich hab folgendes Problem.

Code:
   for(int i = 0; i < vSearch.size() -1; i++)
   {
        OMeasurementRS30 om_aktuell = (OMeasurementRS30)vSearch.elementAt(i);
        OMeasurementRS30 om_next    = (OMeasurementRS30)vSearch.elementAt(i+1);

     if(om_aktuell != null || om_next.operator != null){
      try{
        if(om_aktuell.operator.equals(om_next.operator) && om_aktuell.colorStatus == 0)
        {
          om_aktuell.colorStatus = 0;
          om_next.colorStatus = 0;

        }else
        {
          om_next.colorStatus = 1;
          
        }

Dieser Quelltext dient dazu meine Tabelle einzufärben. Ich hab das Objekt OmeasurementRS30 wo meine Daten drin sind. Ein Objekt repräsentiert eine Zeile.
Jetzt vergleiche ich hier einfach die aktuelle Zeile mit der nächsten. Wenn diese gleich sind soll ColorStatus auf 0 gesetzt werden und wenn nicht eben auf 1. Diese werte werden dann im Cell renderer ausgewertet 0 ist die Farbe blau und 1 die farbe grau.

Nun will ich das er mir also immer gleichen Zeilen in blau färbt wenn dann ne Zeile kommt die anders is grau färbt und die Zeilen die der aktuellen Zeile gleichen weiter grau färbt und sobald sich das wieder unterscheidet den nächsten block gleicher zeilen wieder blau färbt.
einfach blau , grau , blau....

Aber er färbt mir natürlich immer nur die nächste Zeile grau und färbt dann wieder alles blau wie bekomm ich es hin das er mir den nächsten block grau und nicht nur die nächste zeile grau färbt.

Hab scho versucht einfach die methode nochmal zu kopieren und den colorstatus umzudrehen also alles zu invertieren aber dann hat er die ganze tabelle blau gefärbt. h
 
Mit Invertieren kommst Du natürlich nicht zum Ziel.

Vielleicht solltest Du den Wert der aktuellen Zellen in einer Variablen zwischenspeichern und immer als Vergleichskriterium mit zu Rate ziehen.

CU schnuffie
 
aber deshalb hab ich doch colorStatus das is ein int der den ich zum Farben setze verwende und zugleich als Unterscheidungskriterium. Entweder ist die Zeile im Zustand 0 oder im Zustand 1
 
Wenn ich's richtig verstehe, willst Du doch die Zeilenfarbe ändern, beziehst Dich aber auf die Zelle, auch beim Vergleich. - oder?
 
ähm ja ich hab ja n objekt

newObject.operator = datenRSET.getString("operator");
newObject.measure_prog = datenRSET.getString("meausre_prog");
newObject.mean = datenRSET.getFloat("mean");
newObject.process = datenRSET.getString("Process_Date");
newObject.sigma = datenRSET.getFloat("sigma");
newObject.equipment_ID = datenRSET.getString("EQUIPMENT_ID");
newObject.processpr = datenRSET.getString("process");
newObject.wafer_ID = datenRSET.getString("wafer_ID");
newObject.colorStatus = colorStatus;

das so aussieht, dies entspricht einer Zeile, wobei colorStatus nicht angezeigt wird sondern den Wert 0 oder 1 speichert, defaultmäßig 0. Diese objekte sind in dem Vektor vSearch. Diesen geh ich durch und vergleiche jeweils den Operator der aktuellen Zeile mit dem Operator der nächten Zeile wenn diese gleich sind wird der Colorstatus auf 0 (also blau eingefärbt) gesetzt. D.h. die Zeilen werden so lange auf 0 gesetzt wie sie den gleichen Operator haben. Sobald eine Zeil erscheint die einen anderen operator hat soll diese Zeile grau gefärbt sowie die folgenden Zeilen die den selben Operator haben. Dann ist der colorStatus der jeweiligen Zeilen auf 1 gesetzt damit die zeilen im table renderer auch grau gesetzt werden. Und wenn dann wieder eine Zeile kommt die einen anderen Operator hat soll diese wieder blau eingefärbt werden also von vorne beginnen.
 
Zurück