2016-04-05 17 views
0

Ich habe eine Lücke wie folgt aus:Android letzte Variable ist keine Variable?

public static void checkStateSignal(final int counter) { 
    for (int l = 0; l < counter; l += 10) { 
     if (counter - l < 9) { 

      Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
       ArraySignal.LoggerStatus.get(counter) = separated[1]; 
       } 
      },150); 
     } 
    } 
} 

in denen ArraySignal eine Klasse ist und Loggerstatus ist ein Arraylist. Ich bekomme einen Fehler auf

ArraySignal.LoggerStatus.get(counter) = separated[1]; 

die Variable erwartet wird. Aus irgendeinem Grund ist eine letzte Variable keine Variable und ArrayList.get will nicht an eine Wertposition anstelle einer variablen Position gelangen, was mir sehr unlogisch erscheint, da Sie eine Konstante erreichen können. Fehle ich etwas? Auch eine Lösung für das Problem wäre sehr zu begrüßen.

+0

Was ist der Fehler? – Nitesh

+0

Variable erwartet – dec0yable

Antwort

1

Dies ist, weil Sie den Accessor .get (Index) für die ArrayList verwenden und einen Wert zurückgeben, müssen Sie die .add (index, elem) verwenden, um ein Element an der angegebenen Position hinzuzufügen. Überprüfen Sie diesen Link zu sehen um Add object to ArrayList at specified index

+0

Was ich versuche, ist die Zeichenfolge in diesem Index auf einen bestimmten Wert festlegen. kein neues hinzuzufügen, scheint irgendwie redundant zu sein, um hinzuzufügen und dann das vorherige zu entfernen. – dec0yable

+0

oh, anscheinend gibt es eine Set-Funktion, die ich benutzen kann, um diesen String zu setzen. Wusste das nicht. Suchte in die falsche Richtung, Danke. – dec0yable

0

Sie können eine neue Klasse definieren:

Class NewRunnable extends Runnable 
{ 
    public int counter; 
    public NewRunnable(int _counter) 
    { 
     counter = _counter; 
     super(); 
    } 
} 

und verwenden Sie dann, dass in Ihrem Code wie:

handler.postDelayed(new NewRunnable(counter) { 
       @Override 
       public void run() { 
       String[] separated; 
       ArraySignal.LoggerStatus.get(counter) = separated[1]; 
       } 
      },150); 
0
ArraySignal.LoggerStatus.get(counter) = separated[1] 

Ich denke, das Problem ist, Sie versuchen, einen Wert für eine Funktion zu setzen