0

私はAndroidとJavaの世界では初めてで、カーソルデータの結果を表示する前に編集したいと思っています。そのために、次のコードを書きました

private static final String[] INTERNAL_COLUMNS_1 = new String[] {
    MediaStore.Audio.Media._ID,MediaStore.Audio.Media.TITLE};

private static final String[] INTERNAL_COLUMNS_2 = new String[] {
    MediaStore.Audio.Media._ID, "fixString(" + MediaStore.Audio.Media.TITLE + ")"};

private Cursor getInternals() {
    return query(
            MediaStore.Audio.Media.INTERNAL_CONTENT_URI, INTERNAL_COLUMNS_1,
            constructBooleanTrueWhereClause(mFilterColumns),
            null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
}

private Cursor mCursor = new SortCursor(getInternals());

 public String fixString(String oldstr)
{

    String str = new String(oldstr);
    str = str.replace("_", " ");
    if (Character.isLowerCase(str.charAt(0)))
    {
        str = str.substring(0,1).toUpperCase() + str.substring(1,str.length());
    }
    for(int i=1;i<str.length();i++)
    {
     if ((Character.isUpperCase(str.charAt(i))) 
     && (Character.isLetter(str.charAt(i)))
     && (Character.isLowerCase(str.charAt(i - 1))) 
     && (Character.isLetter(str.charAt(i - 1))))
        {
            str = str.substring(0,i) + " " + str.substring(i,str.length());
        }   
    }
    return str;
}

public static void main(){
  for (int i = 0; i < mCursor.getCount(); i++) 
    {
        mCursor.moveToPosition(i);
        String string = mCursor.getString(1);
        Log.d("OUT"," string = "+ string);
    }

INTERNAL_COLUMNS_1を使用すると、ログに表示されます

TomSkinner
Jack_Smith
foxRayan

カーソルの結果として持ちたい:

Tom Skinner
Jack Smith
Fox Rayan

だから私はINTERNAL_COLUMNS_2を使用しましたが、例外があります

android.database.sqlite.SQLiteException: no such function: fixString

その方法、または他のアイデアを知っている人はいますか?

4

1 に答える 1

0

データベースに入る前にデータを変更するか、表示する前に変更する必要があります。あなたがしようとしているのは、関数を作成し、それを SQLite クエリで使用することですが、機能しません。SQL クエリからパーツを削除してfixStringから、カーソルの文字列でそれを使用することは、それが機能する 1 つの方法です。

for (int i = 0; i < mCursor.getCount(); i++) 
    {
        mCursor.moveToPosition(i);
        String string = mCursor.getString(1);
        Log.d("OUT"," string = "+ fixString(string));
    }
于 2013-05-23T14:46:13.300 に答える