1

나는 CursorSelect from sqlite이고,이 query에서 나는 substring을 사용하지만 substring에서 사용할 수는 없다. 그러나 어떤 오류도 내지 않지만 나를 보여줄 것이다. listView 비어있다.커서에서 하위 문자열을 어떻게 사용할 수 있습니까?

try { 
     String value = editText.getText().toString(); 
     cursor = sql.rawQuery(
       "SELECT MetaDataID,Data,CategoryID,ParentID FROM Book WHERE Data LIKE '" 
         + "%" + value + "%'", null); 
     if (cursor != null) { 
      if (cursor.moveToFirst()) { 
       do { 
        Struct_Search note = new Struct_Search(); 
        note.MetaData = cursor.getInt(cursor.getColumnIndex("MetaDataID")); 
        Result = cursor.getString(cursor.getColumnIndex("Data")); 
        int A = Result.indexOf(value); 
        String V = Result.substring(A,100); 
        note.Value = V; 
        note.NumberAyeh = cursor.getInt(cursor.getColumnIndex("CategoryID")); 
        ParentID = cursor.getInt(cursor.getColumnIndex("ParentID")); 
        CursorSecond = sql.rawQuery("SELECT name FROM ContentList WHERE id ="+ ParentID, null); 
        if (CursorSecond != null) { 
         do { 
          CursorSecond.moveToFirst(); 
          note.NameSureh = CursorSecond.getString(CursorSecond.getColumnIndex("name")); 
          CursorSecond.close(); 
         } while (CursorSecond.moveToNext()); 
        } 
        notes.add(note); 
       } while (cursor.moveToNext()); 
      } 
      adapter.notifyDataSetChanged(); 
     } 
    } catch (Exception e) { 
    } finally { 
     cursor.close(); 
    } 

주의 사항 : 문자의 인덱스 후 처음 100 개 문자를 얻으려고 노력하는 경우

   String V = Result.substring(A,100); 
       note.Value = V; 

답변

1

, 그것에 note.Value 설정에 문자열을 변경 :이 줄은 작동하지 않습니다 be

// substring(int beginIndex, int endIndex) 
Result.substring(A, A + 100); 

java에서 부분 문자열의 두 번째 매개 변수는 Length가 아니라 endIndex입니다.

+0

나는 제거하지만 작동하지 않습니다. –

+0

무엇을 할 수 있습니까? ; ( –

+0

@AA 편집, java 하위 문자열 두 번째 매개 변수는 끝 인덱스, 길이가 아님 참고 항목을 로깅하는 것이 좋습니다. 따라서 'A'값이 무엇인지 알 수 있으므로 인덱스를 찾을 수 있습니다 .. – Doomsknight