내 CheckboxTreeViewer
에 필터가 있고 트리 뷰어에 필터를 적용하기 전에 항목을 선택했습니다. 내 필터가 텍스트 상자에서 작업 중이고 쓰는 동안 ModifyListener
기능을 사용 중입니다.CheckboxTreeViewer가 통화 새로 고침 후 선택 항목을 선택 취소했습니다.
필터가 완벽하게 작동하지만 필터를 적용한 후에 이전 항목이 선택 취소됩니다. 아마도 상황은 LabelProvider
또는 ContentProvider
입니다.
나는 checkboxTreeViewer.refresh(false);
을 호출하지 않으려 고 노력했다.
또한 새로 고침을 통해 접기 문제에 대해 읽었습니다. 제안은 IElementComparer
을 구현하고 equals()
및 hashCode()
기능을 무시하고이 방법으로 문제를 해결할 수 있습니다.
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;
}
}
결론적으로, 나는 내 문제를 해결할 수없는 나는 당신의 도움이 필요합니다
여기 내 컨텐트 프로입니다.
콘텐츠 공급자 코드를 확인해야한다고 생각합니다. –
@ greg-449 콘텐츠 공급자 코드 – cgrgcn