0

の助けを借りて、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;

  }
4

1 に答える 1

0

DialogFragment を使用すると言いますが、コードには AlertDialog と書かれています。DialogFragmentの使用方法の例を次に示します。Google Android チームは、AlertDialog ではなく、DialogFragment を使用することをお勧めします。

追加した:

    @オーバーライド
    public void onViewCreated(View ビュー、Bundle savedInstanceState) {
        super.onViewCreated(ビュー、savedInstanceState);

        もし (保存されたインスタンス状態 != null) {
            aboutFile = savedInstanceState.getString(FILE_NAME);
        }
    }



    @オーバーライド
    public void onSaveInstanceState(Bundle outState) {
        outState.putString(FILE_NAME, aboutFile);
    }

ヘルパー クラスの注入については、たとえば、このを参照してください。

于 2012-03-22T10:37:27.163 に答える