0

CheckboxTreeViewer在不同的分支中有相同元素的多个实例。我的问题是,setSubtreeChecked在不同分支中实现元素时,会检查它们是否位于不同分支中的相同元素下。这是结构:

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

因此检查 Parent2 下的元素 MidLevel1 将检查 Parent1 下的 MidLevel1 下的所有元素。

同样在此结构下,当使用取消选中树中的所有内容时,在使用获取元素setChecked(element, false)时,并非每个元素都未选中。getCheckedElements

4

1 回答 1

0

您必须使内容提供程序返回的对象与树查看器不同。

您可以通过让您的内容提供者为树中的每个对象返回一些唯一的对象(而不是为树的多个分支返回相同的对象)来做到这一点。

或者,您可以将调用查看器setComparer方法与实现IElementComparer. 这让您可以提供

boolean equals(Object a, Object b);

int hashCode(Object element);

区分树中对象的方法。在这种情况下,这可能更难使用。

于 2015-09-09T19:48:29.027 回答