我在我的CheckboxTreeViewer
上有過濾器,並且在treeviewer上應用過濾器之前,我檢查了一個項目。我的過濾器正在處理文本框,並在編寫時使用ModifyListener
函數。CheckboxTreeViewer在通話刷新後取消選中我的選擇()
text.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
refreshFilter();
}
});
private void refreshFilter() {
myFilter.setFilter(text.getText());
checkboxTreeViewer.refresh();
}
過濾器工作正常,但應用過濾器後,我的舊選擇變得未選中。也許情況是關於LabelProvider
或ContentProvider
。
我試圖撥打checkboxTreeViewer.refresh(false);
無效。
此外,我已閱讀關於崩潰問題的刷新。建議執行IElementComparer
並覆蓋equals()
和hashCode()
函數,也許可以通過這種方式解決不檢查問題。
這裏是我的ContentProvider:
private class MyTreeContentProvider implements ITreeContentProvider {
@Override
public void dispose() {
}
@Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
}
@Override
public Object[] getElements(Object inputElement) {
return ((List) inputElement).toArray(new Object[0]);
}
@Override
public Object[] getChildren(Object parentElement) {
if(parentElement instanceof FirstClass) {
FirstClass is = (FirstClass)parentElement;
return dbc.runJob(Util.byId(is.getId()).joinPrsl(true).joinIsltm(true)).getList().toArray(new SecondClass[0]);
} else
return new Object[0];
}
@Override
public Object getParent(Object element) {
return null;
}
@Override
public boolean hasChildren(Object element) {
if(element instanceof SecondClass)
return false;
else
return true;
}
}
至於結論,我解決不了我的問題,我需要你的幫助。
我認爲我們需要查看您的內容提供商代碼。 – 2014-09-03 09:20:45
@ greg-449我添加了我的內容提供者代碼 – cgrgcn 2014-09-03 10:57:59