2011-02-15 77 views
0

我有一個ListActivity,它使用CursorAdapter顯示數據庫中的項目列表,該列表最初包含表中的所有項目。我還提供了一個EditText視圖,用戶可以在其中輸入搜索文本,並且在輸入字符時,我使用「LIKE」或「MATCH」where子句重新查詢數據庫以過濾結果(IOW,搜索時應用程序的功能) 。Android光標管理w/ListView

目前,我通過在查詢中創建一個新的Cursor,創建CursorAdapter類的新實例,然後在任務完成時從UI線程調用list.setAdapter,從而在AsyncTask中執行此操作。這一切都可行,但是有沒有更好的方式來使用新的WHERE子句從現有的適配器/光標有效地重新查詢數據庫,並避免每次都必須創建新的對象實例?這種技術的任何例子?

道格·戈登 GHCS軟件

回答

1

首先,CursorAdapterchangeCursor - 方法,是可以改變Cursor不改變適配器本身。當更改光標時,相應的AdapterView將自動收到通知並自行更新。

對於進一步的抽象,您可能會提供一個業務對象,該業務對象包裝查詢並可選擇執行查詢並將其提供給AdapterTextView(或擁有TextView的活動)。 TextView更改業務對象,該對象創建一個新的遊標並通知適配器(使用觀察者模式,例如偵聽器)遊標已更改,並且適配器將檢索新遊標並更新自身。