У меня есть небольшой спор с самим собой, и я хотел проверить с остальными из вас, какая реализация является «лучшей» с точки зрения лучших практик.
Как и в обычном приложении Navigation Drawer, в моем есть одна основная NavDrawerActivity, которая содержит сам NavDrawer, и макет фрейма, который я позже заменю. Затем у меня также есть один фрагмент с именем ListsFragment, который в основном содержит ListView данных из простого String ArrayList. Поэтому этот ListsFragment всегда содержит базовый список строк (это означает, что мне нужен только один файл fragment.java).
Теперь, в примере Google Navigation Drawer, у них есть что-то похожее, где у них есть один фрагмент, который они просто заменяют новым содержимым (заменяют, буквально, FragmentManager.replace(etc)). Это означает, что каждый раз, когда мы выбираем элемент из NavDrawer, создается новый фрагмент. Это то, чем я сейчас занимаюсь.
Но я думал, является ли это "грязным" или нет. Не будет ли более чистый способ сделать это:
Создайте во фрагменте метод с именем loadList(ArrayList<String> list)
, который в основном заменяет содержимое ListView во фрагменте потребляемым списком.
В конце концов, разве это не «более дешевая» стоимость операции, чем необходимость каждый раз создавать новый фрагмент? Когда я мог бы просто «обновлять» данные с помощью одной переменной фрагмента, которую я буду поддерживать?
Итак, мой вопрос: что лучше? Или, если «лучше» слишком субъективно: что больше, «путь Java/Android». Было бы здорово увидеть, что вы думаете. Спасибо!
TLDR: что лучше: создавать новый фрагмент каждый раз, когда я выбираю новый элемент из NavDrawer, или просто загружать новые данные с помощью общедоступного метода loadData
.
РЕДАКТИРОВАТЬ: Для тех, кто хочет увидеть пример Google NavDrawer, пример можно загрузить здесь http://developer.android.com/training/implementing-navigation/nav-drawer.html