2012-11-17 2 views
1

저는 스크립트에서 배우의 연습을 돕기 위해 Android 앱을 만듭니다. 사용자는 스크립트에서 캐릭터를 선택하여 리허설 할 수 있습니다. 스크립트는 선택한 캐릭터의 첫 번째 줄까지 사용자에게 표시됩니다. 사용자가 계속 진행하기로 결정하면 현재 행이 표시되고 나머지 스크립트는 다음 행까지 표시됩니다. 사용자는 다시 진행할 수 있습니다.SQLite 쿼리 - 특정 항목을 찾으면 데이터베이스에서 행을 반환하지 않습니다.

나는 전체 플레이를 SQLite 데이터베이스에 저장하고 데이터베이스에서 쿼리를 실행하여 사용자 지정 ListView를 채 웁니다.

제 질문은 데이터베이스에서 쿼리를 실행하는 방법입니다.하지만 특정 항목 (예 : 캐릭터의 이름)을 찾으면 항목을 반환하지 않습니다. 나는 다음 방법으로 목록보기 채우는? 서에 결과를 저장 :

private void fillData() { 

    mFrom = new String[] { PlayDbAdapter.KEY_CHARACTER, 
      PlayDbAdapter.KEY_LINE }; 
    mTo = new int[] { R.id.textCharacter, R.id.textLine }; 

    // Now create an array adapter and set it to display using our row 
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, 
      R.layout.play_list_layout, mCursor, mFrom, mTo); 

    setListAdapter(adapter); 
} 

더 이상 정보 나 코드를 필요로하는 경우, 알려 주시기 바랍니다.

감사합니다.

답변

2

커서의 스크립트 청크를 반환 한 다음 커서의 액터 첫 번째 행을 검색하는 것이 훨씬 효율적입니다.

또 다른 방법은 문자에 대해 "컨텍스트"줄을 반환하는 것입니다. 데이터베이스에 행에 대한 색인을 저장하십시오. 문자의 줄만 포함하는 커서를 반환 한 다음 문자의 줄 앞뒤에 10 줄을 반환하는 두 번째 쿼리를 수행합니다.

+0

첫 번째 사항에 대해서는 약 스크립트가 포함 된 페이지를 반환하는 방법이 있습니다. 20 라인. 또한 Cursor의 각 행을 반복하여 문자의 첫 번째 줄을 식별하는 방법을 알고 있습니다. 첫 번째 라인을 찾으면 무엇을해야합니까? Cursor에서 행을 삭제할 수 없다는 인상하에있었습니다. –

+0

Android '커서'는 쿼리의 전체 결과를 읽습니다. 따라서 결과를 제한하려면 SQL 쿼리에서이 작업을 수행해야합니다. –

+0

좋아, 커서의 각 행을 반복하고 ArrayList에 관련 데이터를 추가했다. 일단 Cursor를 통해 점진적으로 끝나면 Listview에 ArrayList를 채 웁니다. 당신의 도움을 주셔서 감사합니다! –

관련 문제