我正在尝试在NoteEdit活动(Notepad Exercise 3代码)上添加下一个/后退按钮。
我创建了选项菜单,并在那里添加了两个按钮。在onOptionsItemSelected
我写了以下内容:
case R.id.movie_menu_previous:
Intent i = new Intent(this, MovieView.class);
i.putExtra(MoviesDbAdapter.KEY_ROWID, mRowId+1);
startActivity(i);
return true;
case R.id.movie_menu_next:
Intent i = new Intent(this, MovieView.class);
i.putExtra(MoviesDbAdapter.KEY_ROWID, mRowId+1);
startActivity(i);
return true;
但问题是行数有限。因此,如果用户在最后一行按下Next,我将获得FC。
我怎么知道这是第一排?最后一排? (我已修改了初始代码,现在在数据库中我有很多记录,但并非所有记录都显示在ListView
中)
并且,更改populateFields
函数的逻辑并调用它而不是创建新活动不是更好吗?
答案 0 :(得分:0)
我已覆盖populatefields
功能,并添加了以下内容:
mRowId = mDbHelper.getNextRecord(1, mRowId);
以下是getNextRecord函数的代码:
public long getNextRecord(int next, long rowId) {
long nextRowId = 0;
Cursor mCursor = mDb.query(DATABASE_TABLE, new String[] {KEY_ROWID,KEY_TITLE}, KEY_TITLE + "!=\"\"", null, null, null, null);
if (mCursor.moveToFirst()) {
do {
if (mCursor.getLong(mCursor.getColumnIndexOrThrow(KEY_ROWID)) == rowId) {
if (!mCursor.move(next)) {
// first (-1) or last position
if (mCursor.getPosition() == -1) {
mCursor.moveToLast();
} else {
mCursor.moveToFirst();
}
}
nextRowId = mCursor.getLong(mCursor.getColumnIndexOrThrow(KEY_ROWID));
break;
}
} while (mCursor.moveToNext());
}
mCursor.close();
return nextRowId;
}