я создал с помощью DialogFragment пользовательского AlergDialog с помощью Android Compatibility Support Package
предотвратить данные загружаются каждый раз в DialogFragment
В моем пользовательском диалоге у меня есть ListView внутри диалога и содержание ListView загружается из Sqlite базы данных в Android. Это диалоговое окно появляется из списка, которое находится внутри фрагмента.
Теперь t, всякий раз, когда я нажимаю на listview (который находится внутри фрагмента), диалоговое окно появляется, когда данные в списке отображаются успешно, но каждый раз, когда я нажимаю на listitem (который находится внутри фрагмента) каждый раз, данные получают нагрузку из базы данных в ListView диалогового окна, в bcoz onCreate is being called every time
так WHT я хочу data should be loaded at once for all listitem of listview which is inside of fragment.
Код
Всякий раз, когда ListItem во фрагменте получает щелкнул, я сделать вызов пользовательского DialogFragment
DalogFragment newFragment = TemplateToContact.newInstance("hi");
newFragment.show(getFragmentManager(), "dialog");
OnCreate из DialogFragment
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
contactDB = new ContactDB(getActivity().getApplicationContext());
contactDataList = contactDB.getAllContacts();
templateContactAdapter = new TemplateContactAdapter();
}
в OnCreateDialog создать пользовательское alertdialog окна, установите adapger и вернуть его
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater factory = LayoutInflater.from(getActivity());
View v = factory.inflate(R.layout.cdialog, null);
builder = new AlertDialog.Builder(getActivity());
builder.setView(v);
templateContactDlg = builder.create();
templateContactList = (ListView)v.findViewById(R.id.contactDlgList);
templateContactList.setAdapter(templateContactAdapter);
return templateContactDlg;
}
Я расширил класс DialogFragment и внутри класса я переопределил onenthateDialog menthod и из этого я маскирую окно AlertDialog и возвращаю его, вы можете видеть то же самое в ссылке, которую вы мне дали, перейдите в раздел AlertDialog – Hunt
Do вы используете saveInstanceState для сохранения данных между onStop и onCreate? Обычно у меня есть класс диспетчера данных между моим фрагментом и дао. Класс менеджера @Injected, и он кэширует данные. – Christine
Я не знаю, как использовать это, у вас есть какой-нибудь образец кода фрагмента для него. – Hunt