Android SQLite修改后刷新视图数据

时间:2015-03-02 15:01:35

标签: android sqlite gridview

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

问题:

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

问题:

有没有办法更新AccountManager上的数据,而无需更改我的代码。如果是这样,我该如何做,如果没有,哪种方法可以让我将AccountManager上的数据链接到我的数据库中的数据,这样任何修改都会在修改后立即反映在AccountManager上。 / p>

我如何将数据从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);

  }
 }
}

如何从GridView

中的AccountManager检索数据
final Account Acc = (Account) getIntent().getSerializableExtra("AccountObject");

1 个答案:

答案 0 :(得分:3)

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