Если бы у Вас есть много деревьев в базе данных, и Вы будете только когда-либо выводить целое дерево, я сохранил бы древовидный идентификатор (или идентификатор корневого узла) и родительский идентификатор узла для каждого узла в базе данных, получил бы все узлы для конкретного древовидного идентификатора и процесс в памяти.
Однако при выводе поддеревьев можно только получить поддерево конкретного родительского идентификатора узла, таким образом, или необходимо сохранить все родительские узлы каждого узла, чтобы использовать вышеупомянутый метод или выполнить несколько SQL-запросов, поскольку Вы убываете в дерево (надежда в Вашем дереве нет никаких циклов!), хотя можно снова использовать тот же Подготовленный Оператор (предполагающий то, что узлы имеют тот же тип и все хранятся в единственной таблице) для предотвращения перекомпиляцию SQL, таким образом, это не могло бы быть медленнее, действительно с оптимизациями базы данных, относилось к запросу, это могло быть предпочтительно. Мог бы хотеть запустить некоторые тесты для обнаружения.
, Если Вы только храните одно дерево, Ваш вопрос становится одними из запросов поддеревьев только и второго примененного ответа.
Если вы используете ArrayAdapter
, манипулируйте содержимым списка через адаптер - не трогайте нижележащий список. Существуют методы add ()
, insert ()
и remove ()
в ArrayAdapter
.
Если вы используете CursorAdapter
, выполните запрос ()
для Курсора
.
Попробуйте ArrayAdapter: notifyDataSetChanged
Ссылка на документы Google