Forma correcta de reflejar los cambios de datos en los espectadores de JFace

Estoy buscando el JFacedesarrollo de Eclipse. Hice un complemento para actuar como un proveedor de contenido ficticio para a ComboViewer. Este proveedor esencialmente proporciona el modelo de datos como un ArrayListvalor codificado. De todos modos, traté de entender el enfoque.

Configuré el modelo a ComboViewertravés del comboViewer.setInput(list)método.
En la prensa de un botón que llamo el método de otro objeto que las actualizaciones de la listque pasa como inputa la ComboViewer(añade otro elemento) y hago un llamamiento comboViewer.refreshpara reflejar el cambio, pero no pasa nada.

Resulta que:

Necesito llamar comboViewer.setInput(list) con la lista actualizada para ver los cambios en los datos (es decir, la adición anterior) en mi combo UI. Descubrí que comboViewer.refreshrefleja cualquier actualización solo si obtengo la retención de comboVieweruna como entrada Objecty la modifico. Es decir, si lo hago:

List<SomeObject> data = ((List<SomeObject>)(comboViewer.getInput()));  
data.add(new SomeObject("aaa","cccc"));  
comboViewer.refresh();    

Solo así se actualizan los datos. Pero no entiendo cuál es la forma correcta de usar estas API.
¿Se supone que alguna vez tengo que retener y modificar el objeto que paso en el setInputmétodo? Se siente que no debería estar haciéndolo. Entonces, ¿para qué sirve refresh?

¿Cuál es la forma correcta de hacer actualizaciones de los datos que se proporcionan a los Viewers?

Respuesta 1

Tengo varios métodos que devuelven un CompletableFuture y me gustaría encadenar de una manera específica package com.sandbox; import java.util.Random; import java.util.concurrent.CompletableFuture; ...

Estoy tratando de buscar usuarios almacenados en mi base de datos de Firebase por nombre de usuario con una barra de búsqueda simple (EditText) y cuando se hace clic en un botón para mostrar ese usuario en particular, tengo el siguiente código ...

import java.util.Scanner; public class Array1 {public static void main (String [] args) {Scanner input = new Scanner (System.in); int [] valores = {1, 2, 3, 4, 5}; Sistema....

Sin usar matrices y métodos especiales, como el método de división, ¿cómo escribo el siguiente método? La entrada int representa un número n que se supone positivo, y la cadena de salida contiene ...