Используя TreeField, развернуть или свернуть дерево в Blackberry?

Я нарисовал древовидную структуру, используя TreeField в Blackberry. Корневой узел состоит из 15 узлов, и каждый узел имеет соответствующие дочерние узлы, и при запуске приложения все узлы становятся развернутыми. Мне нужно, чтобы только конкретный узел был развернут, а все остальные свернуты.

Я попытался использовать следующий метод из apis.

myTree.setDefaultExpanded(false);

и

myTree.setExpanded(1, true);

но, похоже, пока не оказывает никакого влияния на дерево. Все узлы расширяются при запуске приложения.


person Yatin    schedule 01.08.2013    source источник


Ответы (1)


Если вы посмотрите документацию для TreeField, вы увидите, что setDefaultExpanded() необходимо вызывать перед добавлением узлов, а не непосредственно перед их отображением:

setDefaultExpanded

public void setDefaultExpanded(boolean expanded)

Задает состояние расширения по умолчанию для будущих распределений узлов.

Таким образом, чтобы изменить пример TreeField, вы должны сделать что-то вроде этого:

   public TreeFieldDemoScreen()
   {             
      setTitle("Tree Field Demo");

      String fieldOne =  new String("Parent folder 1");
      String fieldTwo =  new String("Parent folder 2");
      String fieldThree =  new String("Sub-folder 1");
      String fieldFour =  new String("Sub-folder 2");

      TreeCallback myCallback = new TreeCallback();
      TreeField myTree = new TreeField(myCallback, Field.FOCUSABLE);
      myTree.setDefaultExpanded(false);
      
      int node1 = myTree.addChildNode(0, fieldOne);
      int node2 = myTree.addChildNode(0, fieldTwo);
      int node3 = myTree.addChildNode(node2, fieldThree);
      int node4 = myTree.addChildNode(node3, fieldFour);

      add(myTree);
   }

 
person Nate    schedule 02.08.2013