Android SQLite修改后刷新 View 数据

标签 android sqlite gridview

我有一个 Activity GridView,它显示我的数据库中的数据。当用户选择一个 Account 时,它将加载另一个 Activity AccountManager,其中包含 GridView 中所选项目的所有详细信息,并允许用户管理它从那里(修改,删除等等)。

问题:

当用户修改 Account 时,所做的修改不会显示在 AccountManager 中,而是仍然显示来自 GridView 的初始数据。我的猜测是因为从 GridView 链接到 AccountManager 的数据没有直接链接到数据库,而是我使用了一个中间人,所以数据在方式静态并与数据库分离。

问题:

有没有一种方法可以更新 AccountManager 上的数据而无需更改我的代码。如果是这样我该怎么做,如果不是什么方法可以让我将 AccountManager 上的数据链接到我的数据库中的数据,这样任何修改都会反射(reflect)到 AccountManager 修改后立即。

我如何将数据从 GridView 传递到 AccountManager

grid.setOnItemClickListener(new OnItemClickListener() {

 @Override
     public void onItemClick(AdapterView<?> parent, View v, int position,
                                                                long id) {
     try {
    SQLiteCursor cr = (SQLiteCursor) parent.getItemAtPosition(position);
    String name = cr.getString(cr.getColumnIndex(DatabaseHelper.colName));
    int amount = cr.getInt(cr.getColumnIndex(DatabaseHelper.colAmount));
    String purpose = cr.getString(cr.getColumnIndex(DatabaseHelper.colPurpose));
    String Terms = cr.getString(cr.getColumnIndex(DatabaseHelper.colTermsClass));
    String Status = cr.getString(cr.getColumnIndex(DatabaseHelper.colStatClass));
    String date = cr.getString(cr.getColumnIndex(DatabaseHelper.colDate));
    String editdate = cr.getString(cr.getColumnIndex(DatabaseHelper.colEditDate));
    Account acc = new Account(name, amount, purpose,     db.GetTermsID(Terms),date,editdate,db.GetStatID(Status));
    acc.SetID((int) id);

Intent myIntent = new Intent(AccountManager.this, AccountDetails.class);
myIntent.putExtra("AccountObject", acc);
startActivityForResult(myIntent, 0);

  }
 }
}

我如何从 AccountManager 中的 GridView 检索数据

final Account Acc = (Account) getIntent().getSerializableExtra("AccountObject");

最佳答案

您可以使用 CursorLoader http://developer.android.com/reference/android/content/CursorLoader.html

或 ContentObserver http://developer.android.com/reference/android/database/ContentObserver.html

当 ContentProvider ( http://developer.android.com/reference/android/content/ContentProvider.html ) 中的数据更改时通知 URI,将分别触发 CursorLoader 和 ContentObserver 的 onLoadFinished 或 onChange

关于Android SQLite修改后刷新 View 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28812897/

相关文章:

php - 如何从网格 Yii2 搜索模型中的许多关系中获取计数

java - Material 设计的 GridView 中未显示标高

Android:将对象从一个 Activity 发送到另一 Activity

android - ConstraintLayout 可以帮助将右侧项目流到下一行吗?

java - 在 android 派中重新启动应用程序时,sqlite 中输入的数据会自动删除

sqlite - 从字符串SQL末尾替换新行并更新列

android - 最好的手机来测试自己开发的 android 应用程序?

android - 如何防止点击事件触发两次

mysql - 在特定日期用sql/PHP计算两个不同行/列中两个数字的平均值、方差和标准差

java - 在运行时更新和删除 GridView 项目