android - 向数据库插入记录后如何更新 ListView ?

标签 android sqlite listview sql-update

我在向数据库中插入记录后更新 ListView 时遇到问题。

在创建时,我将数据从数据库加载到 ListView 中:

Cursor c = db.getAllCategory();
    List<String> l = db.getItemByFilteredCategory();

    //add total goals that match with each category
    if (c.moveToFirst()) {
        do {
            int totalGoals = db.getMyGoalByCat(c.getInt(0)).getCount();
            db.updateCategory(c.getInt(0), c.getString(1), c.getString(2), totalGoals);

        } while (c.moveToNext());
    }

    //update category list
    c = db.getAllCategory();

    //add items to list
    ListAdapter adapter = new SimpleCursorAdapter(this,
            R.layout.custom_categorylist,
            c,
            new String[]{"_id", "categoryName", "categoryDescription", "totalGoals"},
            new int[]{R.id.customViewCatId, R.id.customViewCategory, R.id.customViewCatDescription, R.id.customViewTargetNumber});

    lv.setAdapter(adapter);

在同一个 Activity 中,我有一个按钮。单击该按钮后,我会显示一个包含 2 个按钮的对话框:创建和取消。

如果单击“创建”按钮,我会将新数据插入数据库并关闭对话框。

btnAddCategory.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final Dialog dialog = new Dialog(MainActivity.this);
            dialog.setContentView(R.layout.custom_create_category);
            dialog.setTitle("Create new category");
            dialog.show();

            Button btnCancel = (Button) dialog.findViewById(R.id.btnCancelCategory);
            btnCancel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    dialog.dismiss();
                }
            });

            final EditText etCatName = (EditText) dialog.findViewById(R.id.etCatName);
            final EditText etCatDescription = (EditText) dialog.findViewById(R.id.etCatDescription);

            Button btnCreate = (Button) dialog.findViewById(R.id.btnCreateCategory);
            btnCreate.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    DBAdapter dbSub = new DBAdapter(getApplicationContext());
                    dbSub.openDB();
                    dbSub.insertCategory(etCatName.getText().toString(),etCatDescription.getText().toString(), 0);
                    dbSub.closeDB();

                    dialog.dismiss();
                }
            });
        }
    });

在那一刻,我将回到带有 ListView 的主 Activity。如何在这一步获取 ListView 更新?

干杯,

最佳答案

要更新列表中的数据,您必须调用 adapter.notifyDataSetChanged()

关于android - 向数据库插入记录后如何更新 ListView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27655862/

相关文章:

android - 如何防止通知栏在新通知上滚动动画

listview - 用列/行小部件包裹小部件后屏幕消失

android - - 如何修复它 : Incorrect use of ParentDataWidget?

java - 检查数组列表并删除一些参数

android - Gradle错误:任务 ':app:compileDebugJavaWithJavac'的执行失败

sql - 两列上的唯一索引是否意味着每列都有一个索引?

带有 SQLite 数据库的 Android Spinner

android - 带复选框和不带复选框的 ListView

java - 在Android中执行一次异步任务

ios - 在 iOS 中创建数据库的合适扩展名是什么?