の助けを借りて、DialogFragment を使用してカスタム AlergDialog を作成しました。Android Compatibility Support Package
私のカスタム ダイアログでは、ダイアログ内にリストビューがあり、リストビューのコンテンツは Android の Sqlite データベースからロードされています。このダイアログは、フラグメント内にあるリストビューからのみポップアップ表示されます。
これで、リストビュー(フラグメント内)をクリックするたびに、データがリストビューに正常に表示されるダイアログが表示されますが、リストアイテム(フラグメント内)を押すたびに、データがデータベースからロードされますダイアログ ボックスのリストビュー bcozonCreate 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");
DialogFragment の OnCreate
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
contactDB = new ContactDB(getActivity().getApplicationContext());
contactDataList = contactDB.getAllContacts();
templateContactAdapter = new TemplateContactAdapter();
}
OnCreateDialog でカスタムアラートダイアログボックスを作成し、アダプターを設定して返します
@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;
}