2013-10-12 60 views
0

我对在我的Android应用程序中搜索感到困惑。我使用我的ContentProvider中的数据填充ListView。 我集成了一个搜索视图。这工作得很好,但如果用户输入的搜索字符串,错误的URI被称为:用"NumberFormatException"Android:在ListView中用ContenProvider搜索

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);   
} 

应用崩溃。例如。我在搜索字段中输入'a'。据我研究谷歌开发网站,这个URI应该被称为:+"/*",

事实上,调用的URI "/#",并抛出异常。

任何想法我做错了什么?

+2

请编辑并正确格式化您的问题。 –

回答

0

看起来你错过了RP_ENTRY_DIRECTORY_FILTER案例中的break语句。