2012-12-14 45 views
0

1)創建CursorAdapter或SimpleCursorAdapter來呈現列表。如何在過濾器操作後在CursorAdapter上執行ListView setSelection(0)?

2)現在向下滾動列表中的一個位,所以你是不是在位置0

3)現在執行你已經創建一個CursorAdapter過濾器。

結果:

過濾器正確地更新數據和列表視圖與新的數據更新。

最大的問題是,列表位置/選擇停留在您之前的位置(如果新結果中有足夠的行)。

我想在我的過濾器中執行setSelection(0)以始終將位置設置爲0,但不知道如何去做。對明顯的任何建議?

dataAdapter.setFilterQueryProvider(new FilterQueryProvider() { 
    public Cursor runQuery(CharSequence constraint) { 

    listView.setSelection(0); 
    return newCursor; 
}); 

上述辦法並不由於爲setSelection工作()由數據被更新之前,光標交換。

回答

0

您是否試過ListView.setItemChecked(int position, boolean checked)listView.smoothScrollToPosition(position)(如果您的API> = 8)?

+0

的問題是數據變化在FilterQueryProvider的runQuery方法,這意味着我只能影響現有數據並返回新的數據,而不是由於數據的變化進行任何後期GUI更新觸發。 – Diegomontoya

0

找到了答案。沒有辦法通過過濾器更新setSelection(),但是覆蓋CursorAdapter的changeCursor方法並沒有辦法!

@Override 
    public void changeCursor(Cursor cursor) { 
     super.changeCursor(cursor); 

     listView.setSelection(0); 
    } 
相關問題