Ändern des Listviewers funktioniert nicht

schuetzejanett

Erfahrenes Mitglied
hallo ich habe in einer fieldeditorliste einen listviewer.

In diesen kann ich neue Strings einfügen, Ändern und löschen. Das einfügen und löschen geht. Nur das Ändern funktioniert nicht. Das mache ich mit updateElement() Auch ein refresh funktioniert nicht. Also alle methoden welche auf das Modell des viewers zugreifen. Ich dachte mit setInput(Array[] String) kriegt der vierwer sein Model, aber scheinbar nicht.

Hier sind mal die ListViewermethoden, vielelicht sieht jemand was zu ändern sit, damit das change auch noch funktioniert.

Java:
	private ListViewer getListViewerControl(Composite parent)
	{
		if (listViewer == null)
		{
			listViewer = new ListViewer(parent, SWT.BORDER | SWT.SINGLE
					| SWT.V_SCROLL | SWT.H_SCROLL);
			listViewer.setSorter(new ViewerSorter()
			{
				public int compare(Viewer viewer, Object obj1, Object obj2)
				{
					return obj1.toString().compareTo(obj2.toString());
				}
			});
			listViewer.setContentProvider(new IStructuredContentProvider()
			{

				public Object[] getElements(Object inputElement)
				{
					return (String[]) inputElement;
				}

				public void dispose()
				{
				}

				public void inputChanged(Viewer viewer, Object oldInput,
						Object newInput)
				{
				}
			});
			listViewer.getList().addSelectionListener(getSelectionListener());
			listViewer.getList().addDisposeListener(new DisposeListener()
			{
				public void widgetDisposed(DisposeEvent event)
				{
					listViewer = null;
				}
			});
		} else
		{
			checkParent(listViewer.getList(), parent);
		}
		return listViewer;
	}


protected void doLoad()
	{
		if (listViewer != null)
		{
			String s = getPreferenceStore().getString(getPreferenceName());
						String[] array = parseString(sNeu);
			listViewer.setInput(array);

		}
	}

private void addPressed()
	{
		setPresentsDefaultValue(false);
		String input = getInputObject(null);

		if (input != null)
		{
			listViewer.add(input);
			selectionChanged();

		}
	}


private void changePressed()
	{
		setPresentsDefaultValue(false);
		Object selectedElement = ((IStructuredSelection) listViewer
				.getSelection()).getFirstElement();
		if (null != selectedElement)
		{
			String changedValue = getInputObject(selectedElement.toString());
			if (changedValue != null)
			{
				listViewer.update(selectedElement,
						new String[] { changedValue });
				selectionChanged();

			}
		}

	}

/**
	 * Notifies that the Remove button has been pressed.
	 */
	private void removePressed()
	{
		setPresentsDefaultValue(false);
		Object selectedElement = ((IStructuredSelection) listViewer
				.getSelection()).getFirstElement();
		if (null != selectedElement)
		{
			listViewer.remove(selectedElement);
			selectionChanged();
		}
	}

Sieht einer was ich ändern muss?
 
Zuletzt bearbeitet von einem Moderator:
Zurück