2

我在我的應用程序中遇到問題。我將CursorLoader與CursorAdapter結合在一起。一切都按預期工作,除了一個條件:當我在ListView上有一些項目,並且我將適配器中的光標交換爲空的遊標時,可見項目不會被刪除(只有行之間的分隔符消失)。當我觸摸ListView時,它立即消失。當最後一項被刪除時ListView不會刷新

這是情況。我有一些非空光標: enter image description here

然後我換了遊標,一直沒有結果: enter image description here

正如你所看到的只是分隔disappeard。觸摸屏幕後,兩項消失。

這裏是我的功能交換光標:

public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) 
{ 
    ratesAdapter.swapCursor(cursor); 
} 

片段來源:http://pastebin.com/N2YGzgRj

請幫我解決這個問題。

+3

你在'delete()'後面試過了'adapter.notifyDataSetChanged();'嗎? –

+0

我們可以看到更多的代碼嗎?您是否通過notifyDataSetChanged()通知適配器上的數據集? –

+0

這是我的全部源代碼片段:http://pastebin.com/N2YGzgRj – connexion20000

回答

2

好的,所以在調查問題多一點後,我發現這個問題只適用於Android 4.0.x.這個bug在2.2,2.3或4.1中不存在,只有4.0。爲我解決這個bug的唯一途徑是增加onLoadFinished()

getListView().setVisibility(View.GONE); 
getListView().setVisibility(View.VISIBLE); 

我不覺得它優雅的方式,卜也許你會有一些想法。

+0

Blah,意外地低估了,不能改變它。 *嘆息*對不起:/ –

+0

這仍然是5.0中的一個bug,我嘗試了所有可用的方法來在刪除所有項目後刷新ListView。這是唯一有效的工作。 –

0

不包括notifyDataSetChanged();通常是這些listView不會刷新問題的原因。試圖包括你的加載代碼後,我可以推薦'直到我得到更多的信息。

+0

在onLoadFinished()中添加notifyDataSetChanged()沒有幫助。情況是一樣的。 – connexion20000

+0

你確定onLoadFinished被調用嗎?嘗試在方法內設置Log.d。 – Darwind

+0

我在LogF裏面設置了onLoadFinised()。函數調用正確。 – connexion20000

相關問題