O ControlsFX Textfields.bindAutoCompletion não será atualizado com novos parâmetros. Existe uma solução ou solução alternativa?

O ControlsFX Textfields.bindAutoCompletion não será atualizado com novos parâmetros. Existe uma solução ou solução alternativa?

Passei vários dias pesquisando esse problema específico e usei muitas soluções sugeridas, como '.dispose ()', que pensei que poderiam funcionar, mas não funcionaram, mas nada que eu possa encontrar aborda especificamente esse problema. Achei que um 'superusuário' poderia ter enfrentado esse problema ou algo semelhante. Postei um issue no Git-Hub com detalhes sobre esse assunto, do que acredito ser um bug no parâmetro SuggestProvider, não atualizando a caixa de preenchimento automático com uma lista atualizada. O aplicativo que usa este ControlFX da FXExperience alterna entre bancos de dados, de modo que o JavaFX ComboBox resultante é atualizado com uma nova lista de parâmetros específicos para cada banco de dados que também são passados ​​para o método Textfields.bindAutoCompletion. Além disso, sempre que um banco de dados é trocado, o defeito no SuggestProvider também adiciona a nova lista à lista antiga.

Recriei os detalhes abaixo porque já faz algum tempo sem nenhum reconhecimento. Você pode ver o problema aqui, se necessário:https://github.com/controlsfx/controlsfx/issues/1126

Antes de atualizar o ComboBox e o preenchimento do BindAuto: estes são os dados no ComboBox e no AutoComplete antes da atualização Antes de atualizar o ComboBox e o BindAuto Completion

Combo definido como nulo: ComboBox de tópico redefinido para nulo Combinação definida como nula

Passando valor nulo apenas para ControlFX bindAutoComplete: passando novos valores para o método bindAutoCompletion Passando valor nulo apenas para ControlFX bindAutoComplete

Nenhum item no ComboBox: o menu suspenso do ComboBox mostra apenas o item de valor nulo passado Nenhum item no ComboBox

ControlsFX_bindAutoComplete retém a lista antiga: os controles bindAutoCompletion ainda mantêm a lista antiga de itens, embora tenham sido passados ​​​​parâmetros atualizados. ControlsFX_bindAutoComplete mantém a lista antiga

Responder1

Consegui resolver esse problema. Em vez de deletar esta postagem, pensei que seria útil ter algo para a próxima pessoa. A solução foi bastante simples. Eu não consegui o.dispose()método para trabalhar. Foi porque a declaração AutoCompletionBinding sugerida fornecida estava incorreta. O método .dispose() aparecia mas como não houve erro, pensei que fosse outra coisa. Esta é a solução:

Faça isso (sem declaração de tipo):

AutoCompletionBinding auto = TextFields.bindAutoCompletion(myField, myList);

Não faça isso:

AutoCompletionBinding<String> auto = TextFields.bindAutoCompletion(myField, myList);

Depois de fazer esta declaração, basta chamar o método .dispose() antes de reinicializar seu TextField ou ComboBox com dados atualizados.

auto.dispose();

informação relacionada