我对如何使用游标使用CursorLoader模型访问我需要的数据感到困惑。我能够使用SimpleCursorAdapter并将光标传递给onLoadFinished方法中的适配器的swapCursor方法,您必须按如下方式实现该方法。
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
facilityAdapter.swapCursor(cursor);
}
现在我需要查询数据库并根据返回的行数显示一个整数。我如何访问此信息?有一些信息我想要存储(_id)选定的某些行,以便我可以捆绑它并将其传递给下一个活动,因为id是其他数据库表中的外键,我需要查询数据库。在android开发者网站上我看到有游标类的访问方法,如cursor.getInt,cursor.getString等,我应该使用它们来访问我追踪的数据。
答案 0 :(得分:4)
这里好像你有两个问题......所以我会回答他们两个问题。如果我误解了你的问题,请纠正我......
要获取表中的行数,请执行以下简单查询:
Cursor cur = getContentResolver().query(uri, projection, selection, selectionArgs, sortOrder);
int numColumns = cur.getCount();
cur.close();
由于Android适配器,检索所选项目的ID实际上非常简单。下面是一个示例,概述了如何将id传递给另一个Activity(例如,单击ListView项时)。
public class SampleActivity extends Activity implements
LoaderManager.LoaderCallbacks<Cursor> {
// pass this String to the Intent in onListItemClicked()
public static final String ID_TAG = "id_tag";
private SimpleCursorAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/* setup layout, initialize the Loader and the adapter, etc. */
setListAdapter(mAdapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
final Intent i = new Intent(getApplicationContext(), NewActivity.class);
i.putExtra(ID_TAG, id);
// pass the id to NewActivity. You can retrieve this information in
// the Activity's onCreate() method with something like:
// long id = getIntent().getLongExtra(SampleActivity.ID_TAG, -1);
startActivity(i);
}
}
您必须自己创建一个URI来查询外部数据库。这可以通过以下方式完成:
Uri uri = Uri.withAppendedPath(CONTENT_URI, String.valueOf(id));
其中CONTENT_URI
是ContentProvider
的相应CONTENT_URI。
如果有帮助,请告诉我!