Verschieben (nach oben oder unten) von Elementen im TableViewer

Hallo Leute ich habe einen TableViewer. Rechts daneben sind zwei Buttons. Einer soll das selektierte Element eins nach oben schieben und der andere nach unten. Alle Elemente die sich im TableViwer befinden, habe ich ein meinem Model. kann ich in einer Liste die Elemente nach oben oder unten schieben?

Wenn sich dann im Model die Reihenfolge geändert hat, wird das ja dem Viewer mitgeteilt und er sollte die neue Reuhenfolge wieder anzeigen.... aber wie macht man das?
 
kann ich in einer Liste die Elemente nach oben oder unten schieben?

Soweit ich weiß, gibt es in Java keine Liste, die das verschieben unterstützt. Ich würde mir einfach den Index des entsprechenden Elements holen, es dann aus der Liste entfernen und mit add(index, object) einfach eine Stelle drüber bzw. drunter wieder einfügen.

Wenn sich dann im Model die Reihenfolge geändert hat, wird das ja dem Viewer mitgeteilt und er sollte die neue Reuhenfolge wieder anzeigen.... aber wie macht man das?

Um die Änderungen im Model anzuzeigen sollte ein tableViewer.refresh() reichen.

Ich hoffe das hilft dir weiter.

Grüße
Martin
 
Danke :) So hab ich das auch gemacht. Man muß sich vorher das ersetzte Element aber noch merken und dann an die andere Stelle setzen... :)

Code:
public void moveItem(Item item, int direction) {
		int index = items.indexOf(style);
		int newIndex;
		Item temp;

		switch (direction) {
		// down
		case 0:
			newIndex = index - 1;
			temp = items.get(index - 1);
			items.set(newIndex, item);
			items.set(index, temp);

			break;
		// up
		case 1:
			newIndex = index + 1;
			temp = items.get(index + 1);
			items.set(newIndex, item);
			items.set(index, temp);

			break;
		default:
			break;
		}

	}
 
Zurück