1

我有一個包含按鈕和ListView的片段類,當單擊該按鈕時,DialogFragment將出現在片段類的頂部。它將採取用戶輸入並將其添加到數據庫中,一切正常,但listview不更新,我知道我需要調用adapter.notifyDataChange()我會寫psudeo代碼。Android - ListView不刷新

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.fragment_notes, container, false); 

    add = (Button) view.findViewById(R.id.button1); 

    add.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      //New DialogFragment show.dialog 

     } 
    }); 

    filllist(view); 

    return view; 
} 

另一類,創造我DialogFragment

public Dialog onCreateDialog(Bundle savedInstanceState){ 


    final AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity()); 

    final View view = getActivity().getLayoutInflater().inflate(R.layout.custom_layout, null); 
    build.setView(view); 

    build.setPositiveButton(R.string.add, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      final String text = ((EditText) view.findViewById(R.id.randomtext)).getText().toString(); 


       //Call insert method of database helper. pass user input 
       //dismiss 
       adapter.notifyDataSetChanged(); 


     } 
    }); 

    build.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      dismiss(); 
     } 
    }); 

    return dialog.create(); 

} 

當用戶完成在EDITTEXT領域灌裝機在數據庫中添加插入數據或解散dialogFragment,但它不更新/刷新列表視圖中,我可以在哪裏調用notifyDataSetChanged();

回答

1

在調用notifyDataSetChanged之前,您需要實際更改listview的備份數據。例如,如果您創建的適配器如下:

mAdapter = new MyAdapter(context, R.layout.item_listview_layout, mData); 

,那麼你需要更新你的mData場,然後纔打電話notifyDataSetChanged

+0

好吧,我需要創建一個新的方法調用mAdapter = new MyAdapter(context,R.layout.item_listview_layout,mData);然後adapter.notifyDataSetChanged。作爲一個片段,我可以在onActivityCreated中調用這個方法嗎? – Mark 2015-03-18 23:56:00

+0

在我可以回答這個問題之前,你可以發佈你的DialogFragment中的'adapter'變量是如何初始化的嗎? – Mikhail 2015-03-19 00:03:25

+0

適配器只是我的一個listview的自定義佈局,並映射出在TextView中獲得的數據,但我通過CustomAdapter適配器初始化它;製作一個CustomAdapter的實例。我很可能需要在我的fragment類中調用notifydatachange onActivityCreated而不是onCreateView – Mark 2015-03-19 00:05:26

0

這是一個簡單的解決方案。在致電notifyDataSetChanged()之前,您每次都必須更新連接到適配器的列表。例如,如果您的函數命名爲setListData(),它將在適配器列表中爲您填充數據,您可以在notifyDataSetChanged()之前調用它。 (注意setDataList()只是一個盲例,因爲你沒有共享這段代碼,你的代碼可能會有所不同)

就這麼簡單!希望它的作品✌