【问题标题】:Unable to refresh the ListView with customAdapter无法使用 customAdapter 刷新 ListView
【发布时间】:2014-05-03 08:45:04
【问题描述】:

从过去两天开始,我一直在处理我的代码。

我在 Fragment 和 Button 中有一个列表视图。 单击按钮时,我将数据添加到通过对话框输入的列表视图中 我无法做的是单击确定按钮后刷新 ListView。

这是我的代码

但是当我退出应用程序并再次恢复时它会加载

任何帮助将不胜感激

 @Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    int title = getArguments().getInt("title");
    final EditText input = new EditText(getActivity());
    LayoutInflater inflater = getActivity().getLayoutInflater();


return new AlertDialog.Builder(getActivity())
            .setView(input)
            .setIcon(R.drawable.ic_launcher)
            .setTitle(title)
            .setPositiveButton(R.string.alert_dialog_ok,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int whichButton) {
                            String Value = input.getText().toString();
                            String normalizednumber = NormalizePhoneUtilities
                                    .normalizePhoneNumber(Value);
                            ContactModel contactModel = new ContactModel(
                                    "Hitesh", normalizednumber, String
                                            .valueOf(3));
                            ContactsDatabaseWorker sm = new ContactsDatabaseWorker(
                                    getActivity());

                            sm.AddSmartContact(contactModel);
                            databaseWorker = new ContactsDatabaseWorker(
                                    getActivity());
                            // LinkedList<Cursor> list = new
                            // LinkedList<Cursor>();
                            // list=databaseWorker.getAllData();

                            run = new Runnable() {

                                @Override
                                public void run() {
                                    // TODO Auto-generated method stub
                                    customAdapter = new CustomCursorAdapter(
                                            getActivity(), databaseWorker
                                                    .getAllData());

                                    customAdapter.notifyDataSetChanged();
                                    listview.invalidateViews();
                                    listview.refreshDrawableState();
                                    listview.setAdapter(customAdapter);
                                }
                            };
                            getActivity().runOnUiThread(run);

                            isModal = false;

                        }

                    })
            .setNegativeButton(R.string.alert_dialog_cancel,
                    new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,
                                int whichButton) {

                        }
                    }).create();
}






@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    if (isModal) // AVOID REQUEST FEATURE CRASH
    {
        View view = inflater.inflate(R.layout.smartalert_fragment,
                container, false);
        listview = (ListView) view.findViewById(R.id.lvSmartAlert);
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    View view = inflater.inflate(R.layout.smartalert_fragment, container,
            false);
    Button bAdd = (Button) view.findViewById(R.id.bAddContact);
    bAdd.setOnClickListener(this);
    listview = (ListView) view.findViewById(R.id.lvSmartAlert);

    new Handler().post(new Runnable() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            customAdapter = new CustomCursorAdapter(getActivity(),
                    databaseWorker.getAllData());
            listview.setAdapter(customAdapter);

        }
    });

    return view;
}

【问题讨论】:

    标签: android listview android-listview simplecursoradapter android-cursoradapter


    【解决方案1】:

    在适配器中调用notifyDataSetChanged ();

    【讨论】:

    • 不工作。我把它放在 simplecursoradapter 的 bindView 中。
    【解决方案2】:

    您的 CursorAdapter 有一个 swapCursor() 方法,您可以在每次获得更新的游标时使用该方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2014-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多