原来的代码是这样的:
sqLiteDatabase=dbHelper.getReadableDatabase(); String sql="select id as _id,name from searchSugTab where name like '%"+tempName+"%' order by id desc"; Cursor cursor=sqLiteDatabase.rawQuery(sql,null); Log.d("TAG","Search:Cursor"); SimpleCursorAdapter adapter=new SimpleCursorAdapter(this,R.layout.search_suggection_layout,cursor, new String[]{"name"},new int[]{R.id.suggectionTxt}, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); mSearchSuggestion.setAdapter(adapter); cursor.close(); sqLiteDatabase.close(); |
运行时,ListView没有显示数据。
后来在(https://bbs.youkuaiyun.com/topics/370142897)找解决的办法。
如果在mSeachSuggection.setAdapter(Adapter)之后直接cursor.close(),ListView就不能加载数据。据网上的资料,应该是ListView没有加载完毕就关闭了cursor,导致数据未能加载完成。
所以,去掉
cursor.close(); 然后使用 startManagingCursor(cursor); 来管理cursor的生命周期。 |
不过,有一个小问题是,我使用的Android版本是5.1.1,API22,startManagingCursor()已经被弃用。