2015-10-18 42 views
0



我有一個配置文件imageview,兩個文本視圖和一個喜歡的imageview的列表視圖。
在我上面提供的列表視圖的搜索框中,我想查詢sqlite數據庫並使用SimpleCursorAdapter獲取在我的listview中填充的更新結果。
使用SimpleCursorAdapter更新基於sqlite查詢的listview

以下是我的create table語句,它顯示了涉及的所有列。

public static String CREATE_TABLE_STMT="create table " 
      +CONTACT_TABLE+" (" 
      +ID+" INTEGER PRIMARY KEY AUTOINCREMENT," 
      +NAME+" varchar(100) NOT NULL UNIQUE ," 
      +PHONE+" varchar(100) ," 
      +EMAIL+" varchar(100) ," 
      +JOBTITLE+" varchar(100) ," 
      +WEBPAGE+" varchar(100) ," 
      +PICTUREURL+" varchar(100) ," 
      +THUMBNAILURL+" varchar(100) ," 
      +PICTUREPATH+" varchar(100) ," 
      +THUMBNAILPATH+" varchar(100))"; 

我想運行以下查詢來搜索具有與我的搜索文本匹配的「名稱」的行。具體而言,我試圖檢索名稱列值以搜索查詢開頭的行。

String searchQuery = "SELECT ID as _id," + AppConstants.NAME+","+AppConstants.JOBTITLE+","+AppConstants.THUMBNAILURL + " from " + AppConstants.CONTACT_TABLE + " where " + AppConstants.NAME + " LIKE '" + query + "';"; 


  • 搜索「人」應該返回其名稱後面全行作爲「阿蘭」
  • 搜索「壽」應該返回其名稱爲「托馬斯」回整行

運行查詢後,我檢查遊標值並嘗試更新我的列表視圖

if (cursor != null) { 
      Log.i(AppConstants.APPUILOG,"cursor not null"); 
      cursor.moveToFirst(); 
      String[] from = new String[] new String[] {NAME,JOBTITLE,THUMBNAILURL}; 
      int[] to = new int[] {R.id.textViewMain,R.id.textViewSub,R.id.contact_icon}; 
      SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(this, R.layout.contact_list_item, cursor, from, to); 
      mainListView.setAdapter(cursorAdapter); 
     }else { 
      Log.i(AppConstants.APPUILOG,"cursor is null"); 
     } 

但是這段代碼總是給出空白的listview。

  • 我是否必須自定義SimpleCursorAdapter才能實現相同?
  • 我需要在查詢中做什麼修改?
  • 如何創建自定義SimpleCursorAdapter並顯示更新結果?
+0

請參閱'FilterQueryPrivider'文檔 – pskink

回答

1

因爲我越來越想要在ListView中搜索。 我對不對?如果是,那麼你需要改變你的方法,你不需要在ListView中搜索時與數據庫交互。你需要在ListView中實現過濾器。您可以看到this鏈接以獲得完整的解決方案。

+0

謝謝@Android Dev。我走錯了方向。感謝您的鏈接和指導。 – Stallion

+1

@當然你需要在搜索數據時與數據庫交互,你的數據存儲在數據庫中不是嗎?那麼如何通過查詢來搜索它們呢?只需閱讀「FilterQueryPrivider」並在搜索框中使用'adapter.getFilter().filter(constraint)'就可以了,請參閱[here](https://codeshare.io/aFQT7)以獲得示例代碼 – pskink