2011-05-31 105 views
0

我正在使用SimpleCursorTreeAdapter來填充ExpandableListView小部件。我首先向適配器提供一個Cursor對象,該對象包含listview中組節點的信息,並且我在Adapter中定義了一個方法(getChildrenCursor())來返回一個Cursor,其中包含指定組節點的子節點信息。如何從ExpandableListView控件中刪除組?

一切工作正常,但我想知道如何以編程方式從ExpandableListView小部件中刪除組(及其子)?我想長時間點擊列表中的組項,出現一個彈出的上下文菜單,併爲用戶提供刪除所選組項的選項。我的上下文菜單可以正常工作,但我無法弄清楚如何從列表中刪除一個組。

任何人都可以提供一些建議嗎?

謝謝。

+0

你可以參考[這個問題](http://stackoverflow.com/questions/4366132/delete-group-in-expandable-list) – 2011-05-31 06:39:38

+0

我最初看的是特定的迴應,但不確定如何將該編碼應用到使用Cursor對象查詢SQLite數據庫的適配器。 – cohoman 2011-05-31 13:38:53

回答

0

當用戶單擊上下文菜單項以刪除組時,您必須刪除數據庫中與此組匹配的條目。在此之後,您對數據庫執行新的查詢並將新的光標傳遞給適配器。現在您的列表應該更新,刪除組應該消失。

+0

感謝您的回覆。所以這聽起來像我將需要重新加載原始光標,只是爲了刪除一個組項目?這看起來效率很低,因爲其他展示組的當前崩潰/展開狀態將會丟失。有沒有辦法刪除Cursor組中的單個項目並在ExpandableListView小部件中刷新這些組項目? – cohoman 2011-05-31 13:37:48

+0

好的,我認爲我的工作。遵循你的建議,我做了以下工作:(1)從我的SQLite數據庫表中刪除了所需的記錄。 (2)重新加載包含listview的組節點信息的新光標。 (3)使用listview的適配器上的setGroupCursor()方法將其設置爲步驟(1)中加載的新遊標。 (3)最後,在列表視圖適配器上調用notifyDataSetChanged()方法來刷新列表。這一切都運行正常,列表中的節點(組)保持其原始狀態。再次感謝您的幫助! – cohoman 2011-05-31 15:33:35

+0

太棒了!是的,它可能聽起來有點奇怪,但是當你從你的數據模型中得到數據庫時,你必須刪除相應的項目以更新列表。如果能解決您的問題,請將我的答案標記爲已接受 – Flo 2011-05-31 15:57:23