2015-12-10 78 views
0

我嘗試在我的工具欄中實現一個「android.support.v7.widget.SearchView」,他應該向用戶提供一些建議。用activeAndroid和SearchView檢索CursorAdapter

我希望activeAndroid可以提供我一種直接從我的查詢(基本上是getAll())檢索CursorAdapter的方法。

following link似乎不推薦使用,因爲.toSql()需要私人訪問並且「緩存」未解決。

有什麼想法?

+0

問題是你不顯示輸入的搜索文本和執行的查詢之間的任何連接 – pskink

回答

1

可以使用創建通過ActiveAndroid一個光標:

Cursor cursor = ActiveAndroid.getDatabase().rawQuery("SELECT * FROM TABLE", null);

,您將需要建立自己不過是你提供的應該給你鏈接的「定義適配器」部分很容易的,CursorAdapter的你需要開始什麼。

+0

聽起來不錯。我會打電話給 – aiqency

1

請注意,ActiveAndroid 3.1.0確實將.toSql()顯示爲公共。

你需要做的一件事就是確保你的ActiveAndroid數據庫模型包含預期的_id列,這在默認情況下與ActiveAndroid不存在。您需要卸載應用程序或執行數據庫遷移以查看底層數據庫模型的更改。否則,你可能會得到這個錯誤

java.lang.IllegalArgumentException: column '_id' does not exist 

包括預期的 '_id' 列是不是有默認使用ActiveAndroid:

@Table(name = "Items", id = BaseColumns._ID) 

請求光標這樣的:

public Cursor getCursor() { 
    String sql = new Select() 
      .from(Item.class) 
      .toSql(); 
    String[] params = null; 
    Cursor cursor = Cache.openDatabase().rawQuery(sql, params); 
    return cursor; 
} 

你然後可以創建一個像這樣的適配器:

ListAdapter adapter = new SimpleCursorAdapter(context, 
     android.R.layout.simple_list_item_1, 
     c, new String[] {"Name"}, new int[] { android.R.id.text1} 
); 
+0

事件,如果兩者都很好,最後這似乎是最好的解決方案,謝謝 – aiqency