Android アプリでの検索について混乱しています。ListView
からのデータを に入力しContentProvider
ます。検索ビューを統合しました。これは問題なく動作しますが、ユーザーが検索に文字列を入力すると、間違った URI が呼び出されます。
switch(sURIMatcher.match(uri)) {
case RP_ENTRY_DIRECTORY:
break;
case RP_ENTRY_DIRECTORY_FILTER:
queryBuilder.appendWhere(RpEntry.Columns.SNAME + " LIKE %"+ uri.getLastPathSegment()+"% ");
case RP_ENTRY_ITEM:
long id = ContentUris.parseId(uri);
queryBuilder.appendWhere(RpEntry.Columns.SNAME + " LIKE "+ uri.getLastPathSegment());
// if(selection!=null && !selection.isEmpty())
// _selection += " and"+selection;
// return dbhelper.getReadableDatabase().query(RpEntry.TABLE_NAME,
// projection, _selection, selectionArgs, null, null, sortOrder);
break;
private static final UriMatcher sURIMatcher =
new UriMatcher(UriMatcher.NO_MATCH);
static {
sURIMatcher.addURI(AUTHORITY, RpEntry.CONTENT_DIRECTORY, RP_ENTRY_DIRECTORY);
sURIMatcher.addURI(AUTHORITY, RpEntry.CONTENT_DIRECTORY+"/*", RP_ENTRY_DIRECTORY_FILTER);
sURIMatcher.addURI(AUTHORITY, RpEntry.CONTENT_DIRECTORY+"/#", RP_ENTRY_ITEM);
}
アプリが"NumberFormatException"
. たとえば、検索フィールドに「a」と入力します。私が google-dev サイトを調べた限りでは、この URI は次のように呼ばれるべきです:+"/*",
実際、URI"/#"
が呼び出され、例外がスローされます。
私が間違ったことをしたことはありますか?