0

我在 DialogFragment 的帮助下创建了一个自定义的 AlergDialogAndroid Compatibility Support Package

在我的自定义对话框中,我在对话框中有一个列表视图,并且列表视图的内容是从 Android 中的 Sqlite 数据库加载的。此对话框从仅位于片段内的列表视图中弹出。

现在t,每当我点击listview(在片段内)时,都会出现一个对话框,将数据成功放入listview,但每次我每次按下listitem(在片段内)时,数据都会从数据库中加载一个对话框的列表视图 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 团队建议您使用 DialogFragment,而不是 AlertDialog。

添加:

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

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



    @覆盖
    公共无效 onSaveInstanceState(捆绑 outState){
        outState.putString(FILE_NAME, aboutFile);
    }

例如,对于注入辅助类,请阅读内容。

于 2012-03-22T10:37:27.163 回答