2015-03-02 68 views
1

我有一个活动,GridView,显示我的数据库中的数据。当用户选择Account时,它将加载另一个活动AccountManager,其中将包含从GridView中选择的项目的所有细节,并允许用户从那里管理它(修改,删除和什么)。Android SQLite在修改后刷新数据

问题:

当用户修改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); 

    } 
} 
} 

如何检索GridView的数据AccountManager

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

回答

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,将分别激发onFoadFinished或onChange的CursorLoader和ContentObserver

+0

非常有趣。现在肯定会研究这个,特别是ContentObserver。一旦我设法正确地将其实施到我的代码中,我会尽快回复您,谢谢。 – Cai 2015-03-02 15:18:11