предотвратить загрузку данных каждый раз в DialogFragment - PullRequest
0 голосов
/ 22 марта 2012

Я создал пользовательский AlergDialog, используя DialogFragment с помощью Android Compatibility Support Package

В моем настраиваемом диалоговом окне у меня есть представление списка внутри диалога, и содержимое просмотра списка загружается из базы данных Sqlite в Android. Это диалоговое окно появляется из списка, который находится только внутри фрагмента.

Теперь, когда я нажимаю на просмотр списка (который находится внутри фрагмента), появляется диалоговое окно с данными в виде списка успешно, но каждый раз, когда я нажимаю на элемент списка (который находится внутри фрагмента) каждый раз, данные загружаются база данных в виде списка в диалоговом окне bcoz onCreate is being called every time так что я хочу это data should be loaded at once for all listitem of listview which is inside of fragment.

код

Всякий раз, когда щелкают элемент списка во фрагменте, я вызываю пользовательский DialogFragment

DalogFragment newFragment = TemplateToContact.newInstance("hi");
newFragment.show(getFragmentManager(), "dialog");

OnCreate of DialogFragment

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        contactDB = new ContactDB(getActivity().getApplicationContext());
    contactDataList = contactDB.getAllContacts();
        templateContactAdapter = new TemplateContactAdapter();

    }

в OnCreateDialog я создаю настраиваемое поле alerttdialog, устанавливаю адаптер и возвращаю его

@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;

  }

1 Ответ

1 голос
/ 22 марта 2012

Вы говорите, что используете DialogFragment, но в вашем коде написано AlertDialog. Здесь - пример использования DialogFragment.Команда Google Android рекомендует использовать DialogFragment, а не AlertDialog.

добавлено:


    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        if (savedInstanceState != null) {
            aboutFile = savedInstanceState.getString(FILE_NAME);
        }
    }



    @Override
    public void onSaveInstanceState(Bundle outState) {
        outState.putString(FILE_NAME, aboutFile);
    }

Для введения вспомогательных классов прочитайте, например, this .

...