TreeView внутри getChildern()

Можно ли создать древовидное представление внутри метода getChildern() провайдера контента?

У меня есть древовидная структура, чей метод getElements() показывает несколько узлов, поступающих из перечисления для каждого узла в этом дереве. Я хочу иметь другое представление дерева. Поэтому, когда пользователь расширяет один корневой узел, там должно быть другое древовидное представление.

Спасибо

1 ответ

Решение

Нет, вы не можете вложить дерево зрителей. Вы должны использовать модель данных для дерева, которое представляет все дерево.

Предположим, у вас есть класс TopLevelElement представляющий один из элементов верхнего уровня в дереве и классы Level1Element а также Level2Element для детей первого и второго уровня. Тогда ваши методы контент-провайдера будут примерно такими:

@Override
public Object [] getElements(Object inputElement)
{
  return array of TopLevelElements object;
}

@Override
public Object [] getChildren(Object parentElement)
{
  if (parentElement instanceof TopLevelElement)
   {
     return array of Level1Element children of the top level element
   }
  else if (parentElement instanceof Level1Element)
   {
     return array of Level2Element children of Level1Element
   }
  else if (parentElement instanceof Level2Element)
   { 
     ... return any level 3 elements
   }

  return new Object[0];  // Unknown tree element
}
Другие вопросы по тегам