2011-03-27 1 views
0

NoteEdit 활동 (Notepad Exercise 3 코드)에 다음/뒤로 단추를 추가하려고합니다. 옵션 메뉴를 만들고 거기에 두 개의 버튼을 추가했습니다. onOptionsItemSelected에서 나는 다음과 같은 서면으로 작성했습니다 :안드로이드의 메모장 3에 다음/뒤로 버튼을 추가하는 방법은 무엇입니까?

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; 

을 그러나 문제는 행의 수는 제한되어있다. 따라서 사용자가 마지막 행에서 다음을 누르면 FC가 표시됩니다. 이것이 첫 번째 행인지 어떻게 알 수 있습니까? 마지막 행? (초기 코드를 수정했는데 데이터베이스가 많아서 많은 레코드가 있지만 모두가 ListView에 표시되지 않음) 그리고 populateFields 함수의 로직을 변경하고 생성 작업 대신 호출하는 것이 더 좋지 않습니까? ?

답변

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; 
}