黑莓树领域的父节点或子节点?

时间:2013-07-18 12:22:58

标签: blackberry treeview customization treefield

我需要穿越黑莓中的树田。 我需要知道如何从现有节点检查它是父节点还是子节点? 因为我需要Child行和Parent行的不同行颜色

我之前提到过定制TreeField的问题,如下面的链接所示

Customising Blackberry Treefield

1 个答案:

答案 0 :(得分:1)

看起来您已经在使用TreeFieldCallback来自定义树场的绘制。您可以在drawTreeItem()中检测父节点与子节点。

但是,我们需要清楚你认为“父母”和“孩子”是什么,因为从技术上讲,如果树有一行,那么 父母和孩子都有可能超过2个级别(除了根级别)。


如果“Child”==“Leaf”节点

使用:

public void drawTreeItem(TreeField treeField, Graphics graphics, int node, int y, int width, int indent)  {

    boolean isChild = treeField.getFirstChild(node) == -1;
    if (isChild) {
        // draw child row color
    } else { 
        // draw parent row color
    }
} 

假设“child”的意思是一行,它没有自己的子句(也称为“叶子”节点)。


如果“Child”==“Non-Root Parent”

如果您认为某个节点同时拥有自己的的非根父级别的子节点是“子”行,那么请使用以下逻辑:

public void drawTreeItem(TreeField treeField, Graphics graphics, int node, int y, int width, int indent)  {

    boolean isParent = treeField.getParent(node) == 0;
    if (isParent) {
        // draw parent row color
    } else { 
        // draw child row color
    }
}

第二个实现只会将根节点下直接的行标记为“父”。