1

我有个问题。我有两个活动(MainActivity,EditAccount)。在 MainActivity 我从数据库编译了一个列表视图。在 EditActivty 中,我将数据更新到数据库中,并在数据更改后立即返回 MainActivity:

    public class EditAccount extends Activity {
    ......
    ......


    public void update_acc(View view){

    EditText accName=(EditText)findViewById(R.id.acc_name);
    EditText comment=(EditText)findViewById(R.id.comments);
    String acc_name=accName.getText().toString();
    String comments=comment.getText().toString();
    Intent intent=getIntent();
    int id = (int) intent.getExtras().getLong("data_id"); 
    String data_id= Integer.valueOf(id).toString();

    datasource.updateEvent(acc_name, comments, data_id);
    datasource.close();

    Toast.makeText(getBaseContext(), "Account updated; Acc_name:"+acc_name+", Comment:"+comments, Toast.LENGTH_LONG).show();

    super.onBackPressed();
}

问题是当 Activity 重定向回 MainActivity 时,ListView 中的数据没有更新。那么,如何通知 ListView 数据已更改?请帮忙。先谢谢了,等待您的回复...

4

3 回答 3

7

问题是您onCreate()可能正在从内部数据库中填充 ListView。因此,解决方案是在 ListView 中填充数据库,onResume()以便从数据库中获取更新的数据。

因为当您返回 MainActivity 时,onResume()它将被调用,所以只需将用于从数据库中获取数据的代码放入其中,onResume()而不是onCreate()更新您的 ListView。

于 2013-07-30T08:45:32.707 回答
0

在 onResume() 而不是 onCreate() 中设置数据

请完成完整的活动生命周期。

https://developer.android.com/guide/components/activities/activity-lifecycle

于 2019-12-30T12:12:59.763 回答
-1

添加这个youradapter.notifyDataSetChanged();

于 2013-07-30T08:44:08.843 回答