我有一个包含按钮和 Listview 的 fragment 类,当单击按钮时,一个 DialogFragment 将出现在 fragment 类的顶部。它将接受用户输入并将其添加到数据库中,一切正常但 ListView 不更新,我知道我需要调用 adapter.notifyDataChange() 我将编写伪代码。
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 字段的填写并按下 add 在数据库中插入数据并关闭 dialogFragment 但它不更新/刷新 ListView 时,我可以在哪里调用 notifyDataSetChanged();
最佳答案
在调用 notifyDataSetChanged
之前,您需要实际更改 ListView 的支持数据。例如,如果您按如下方式创建适配器:
mAdapter = new MyAdapter(context, R.layout.item_listview_layout, mData);
然后您需要更新您的 mData
字段,然后才调用 notifyDataSetChanged
。
关于Android - ListView 不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29134780/