0

я создал с помощью 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; 

    } 

ответ

1

Вы говорите, что вы используете DialogFragment но ваш код говорит AlertDialog. Here - пример использования 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, например.

+0

Я расширил класс DialogFragment и внутри класса я переопределил onenthateDialog menthod и из этого я маскирую окно AlertDialog и возвращаю его, вы можете видеть то же самое в ссылке, которую вы мне дали, перейдите в раздел AlertDialog – Hunt

+0

Do вы используете saveInstanceState для сохранения данных между onStop и onCreate? Обычно у меня есть класс диспетчера данных между моим фрагментом и дао. Класс менеджера @Injected, и он кэширует данные. – Christine

+0

Я не знаю, как использовать это, у вас есть какой-нибудь образец кода фрагмента для него. – Hunt

Смежные вопросы