【问题标题】:Android SQLite Refreshing data on view after modificationAndroid SQLite在修改后刷新视图数据
【发布时间】:2015-03-02 23:04:44
【问题描述】:

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

问题:

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

问题:

有没有办法更新AccountManager 上的数据而无需更改我的代码。如果是这样,我该怎么做,如果不是,什么方法可以让我将AccountManager 上的数据链接到我的数据库中的数据,这样任何修改都会在修改后立即反映在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");

【问题讨论】:

    标签: android sqlite gridview


    【解决方案1】:

    您可以使用 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

    【讨论】:

    • 非常有趣。现在肯定会调查这个,特别是 ContentObserver。一旦我设法将它正确地实现到我的代码中,我会回复你,谢谢。
    猜你喜欢
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-07
    • 2023-03-28
    相关资源
    最近更新 更多