Android中使用CursorLoader进行异步数据库操作[页4]
2023-08-23次
javapublic class MyActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks<Cursor> {
private static final int LOADER_ID = 1;
private ListView listView;
private SimpleCursorAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my);
listView = findViewById(R.id.list_view);
adapter = new SimpleCursorAdapter(this, R.layout.list_item, null, new String[]{MyDatabaseHelper.COLUMN_NAME, MyDatabaseHelper.COLUMN_DESCRIPTION}, new int[]{R.id.name, R.id.description}, 0);
listView.setAdapter(adapter);
getSupportLoaderManager().initLoader(LOADER_ID, null, this);
}
@NonNull
@Override
public Loader<Cursor> onCreateLoader(int id, @Nullable Bundle args) {
return new CursorLoader(this, MyContentProvider.CONTENT_URI, new String[]{MyDatabaseHelper.COLUMN_NAME, MyDatabaseHelper.COLUMN_DESCRIPTION}, null, null, null);
}
@Override
public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor data) {
adapter.swapCursor(data);
}
@Override
public void onLoaderReset(@NonNull Loader<Cursor> loader) {
adapter.swapCursor(null);
}
}
在上面的代码中,首先创建一个ListView和一个SimpleCursorAdapter对象,用于显示从Content Provider中加载的数据。然后,在onCreate()方法中,通过调用getSupportLoaderManager().initLoader()方法来初始化CursorLoader。