1

私はそれを持っていCursorますSelect from sqlite、これでquery私はaをします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();
    }

注意: この行は機能しません:

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

1 に答える 1

1

文字のインデックスの後に最初の 100 文字を取得しようとしていて、それに note.Value を設定する場合は、部分文字列を次のように変更します。

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

Java では、substring の 2 番目のパラメーターは長さではなく endIndex です。

于 2014-12-04T09:24:21.390 に答える