1

我使用 CursorLoader 使用内容提供程序查询数据库以从名称列中获取值。然后,我在我的活动的 onCreate() 方法中使用 SimpleCursorAdapter 将其填充到 ListView 中。我想知道是否应该在 Activity 的 onStart() 方法中再次实现适配器,以便在我导航到另一个 Activity 并返回列表视图时更新列表。但我认为这不是必需的,因为 CursorLoader 会自动侦听数据库中的更新。但是当我返回活动时,我的列表视图不会被填充。

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    // Show the Up button in the action bar.
    setupActionBar();
    mAdapter = new SimpleCursorAdapter(this,com.example.test.R.layout.list_view , null,
            fromColumns, toViews,0);
    setListAdapter(mAdapter);
    listview = getListView();
    listview.setAdapter(mAdapter);
    View addButton=findViewById(R.id.add);
    addButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            Intent i=new Intent(getApplicationContext(), Enter.class);
            startActivity(i);
        }
    }
    );
    getLoaderManager().initLoader(LIST_ID, null, this);

}
public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) {
    // TODO Auto-generated method stub
    Uri CONTENT_URI=Uri.parse("content://" + "com.example.test" + "/University");

    return new CursorLoader(this,CONTENT_URI, PROJECTION, SELECTION, null, null);

}

@Override
public void onLoadFinished(Loader<Cursor> arg0, Cursor arg1) {
    // TODO Auto-generated method stub
    mAdapter.swapCursor(arg1);

}

@Override
public void onLoaderReset(Loader<Cursor> arg0) {
    // TODO Auto-generated method stub
    mAdapter.swapCursor(null);
4

1 回答 1

0

你可以尝试添加mAdapter.notifyDataSetChanged();onLoadFinished

于 2013-09-29T21:15:05.250 回答