CheckboxTreeViewer с несколькими экземплярами одного и того же элемента в разных ветвях

У меня есть CheckboxTreeViewer с несколькими экземплярами одного и того же элемента в разных ветвях. Моя проблема заключается в том, что при реализации элементов setSubtreeChecked в разных ветках проверяются, находятся ли они под одним и тем же элементом в другой ветке. Вот структура:

-Parent1
    -MidLevel1
        -BottomLevel1
        -BottomLevel2
    -MidLevel2
        -BottomLevel1
        -BottomLevel2
- Parent2
     -MidLevel1
        -BottomLevel1
        -BottomLevel2
    -MidLevel2
        -BottomLevel1
        -BottomLevel2

Таким образом, проверка элемента MidLevel1 под Parent2 будет проверять все элементы под MidLevel1 под Parent1.

Также в этой структуре при использовании setChecked(element, false) для снятия всех элементов в дереве не каждый элемент не отмечен при использовании getCheckedElements для получения элементов.


person EdDen    schedule 09.09.2015    source источник


Ответы (1)


Вы должны сделать так, чтобы объекты, возвращаемые вашим контент-провайдером, отличались от средства просмотра дерева.

Вы можете сделать это, если ваш контент-провайдер возвращает какой-то уникальный объект для каждого объекта в дереве (вместо одного и того же объекта для нескольких ветвей дерева).

В качестве альтернативы вы можете использовать вызов метода просмотра setComparer с классом, который реализует IElementComparer. Это позволяет вам предоставлять

boolean equals(Object a, Object b);

int hashCode(Object element);

методы различения объектов в дереве. Это, вероятно, более сложно использовать в этом случае.

person greg-449    schedule 09.09.2015
comment
Спасибо. Я поместил свои объекты в классы-оболочки, и это сработало отлично. - person EdDen; 10.09.2015