# Mehrere String-Werte in eine Tabellen-Zelle schreiben



## derErnesto (20. Dez 2010)

Hallo, 

ich habe folgendes Problem: 

Ich habe eine vordefinierte Tabelle (keine Java-Tabelle) und kann auf bestimmte Spalten zugreifen und den Wert einer bestimmten Spalte (in diesem Fall hat die Spalte den Typ "String") erfragen. Falls die Zelle leer ist, dann möchte ich in diese Zelle einige Abkürzungen hinzufügen. 

Dazu habe ich folgende Vorgehensweise: 

```
....
List<String> list = new ArrayList<String>();
...
public void addAbkuerzungen(String abk)
{
if(column.getName().equals("Spalte X")
{
   list.add(abk);
   for(Iterator<String> iter = list.iterator(); iter.hasNext();)
    {
      column.setValue(abk + ", ");
    }
}
}
```

Die Methode bekommt nacheinander z.B. folgende Abkürzungen: "AA", "AB", "AC", "AD". 
Das Problem ist, das dann in der Spalte nur die einzelnen Abkürzungen stehen und für die nachfolgenden Abkürzungen werden die alten einfach überschrieben: 
Erst steht in der Zelle "AA, ". Dann steht "AB, ", etc. 
Ich möchte aber das alle Abkürzungen hintereinander in einer Zelle durch ein Komma getrennt werden ("AA, AB, AC, AD").
Wie kann ich mein Problem lösen? Ich habe versucht das über eine Liste zu realisieren (weil ich späteren verlauf möchte ich auch einzelne Abkürzungen aus der Liste löschen)

Vielen Dank für die Hilfestellung!


----------



## Marco13 (20. Dez 2010)

```
StringBuilder sb = new StringBuilder();
for(Iterator<String> iter = list.iterator(); iter.hasNext();)
{
    sb.append(abk+", ");
}
column.setValue(sb.toString());
```


----------



## SlaterB (20. Dez 2010)

solange aus iter nicht next() ausgelesen wird, gibts eine Endlosschleife


----------



## Marco13 (20. Dez 2010)

*mehr Cola sauf*


----------



## derErnesto (20. Dez 2010)

Vielen Dank für die Antwort: 
Leider funktioniert bei mir diese Vorgehensweise nicht. 
Kann es daran liegen, das Abkürzungen der Methode nacheinander übergeben werden. Also erst bekommt die Methode addAbkuerzungen(String abk) die Abkürzung "AA". Wenn die Methode abgearbeitet wurde, dann bekommt es die zweite Abkürzung, etc. 
Es taucht nach wie vor das gleiche Problem auf, dass die alten Abkürzungen überschrieben werden. 


```
list.add(abk);
StringBuilder sb = new StringBuilder();
for(Iterator<String> iter = list.iterator(); iter.hasNext();)
{
	sb.append(iter.next() + ", ");
}
column.setValue(sb.toString());
```


----------



## SlaterB (20. Dez 2010)

verwende etwas Richtung

```
column.setValue(colum.getValue() + aenderung);
```


----------



## derErnesto (20. Dez 2010)

vielen dank, das war die lösung. 


```
column.setValue(column.getValue() + ", " + sb.append(iter.next()));
```


----------



## Marco13 (20. Dez 2010)

Das sieht jetzt seltsam aus ???:L So ein sb.append da reingeklatscht, das kann eigentlich kaum Sinn machen :bahnhof:


----------



## SlaterB (20. Dez 2010)

zur Vervollständigung vielleicht:

```
list.add(abk);
StringBuilder sb = new StringBuilder();
sb.append(column.getValue());
for(String st : list)
{
	sb.append(", ");
	sb.append(st);
}
column.setValue(sb.toString());
```
enthält vielleicht am Anfang ein überflüssiges Komma, das kann noch optimiert werden


----------

