Android 显示前编辑光标数据
我是android和Java世界的新手,我想在显示光标数据结果之前对其进行编辑。为此,我编写了以下代码Android 显示前编辑光标数据,android,exception,android-cursoradapter,Android,Exception,Android Cursoradapter,我是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[] {
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);
}
我希望将以下内容作为光标结果:
Tom Skinner
Jack Smith
Fox Rayan
所以我使用了内部列\u 2,但我有一个例外
android.database.sqlite.SQLiteException: no such function: fixString
有人知道怎么做吗,或者有其他想法吗?您需要在数据进入数据库之前更改数据,或者在显示数据之前更改数据。您试图做的是创建一个函数并在SQLite查询中使用它,这是行不通的。从SQL查询中删除
fixString
部分,然后在游标的字符串上使用它是一种工作方式
for (int i = 0; i < mCursor.getCount(); i++)
{
mCursor.moveToPosition(i);
String string = mCursor.getString(1);
Log.d("OUT"," string = "+ fixString(string));
}
for(int i=0;i
是的,我知道它在工作。但我想把字符串固定在光标上。我无法更改数据库值。我在光标上附加了一个数组适配器,它以错误的格式显示字符串,我希望它使用fixString函数来显示它。我看到了这个讨论,并尝试使用fixString函数执行相同的操作
for (int i = 0; i < mCursor.getCount(); i++)
{
mCursor.moveToPosition(i);
String string = mCursor.getString(1);
Log.d("OUT"," string = "+ fixString(string));
}