我使用ListView與PullToRefresh機制使用SwipeRefreshLayout。我在初始化時將代碼中的SwipeRefreshLayout動態添加到ListView中。ListView消失之前更新自己當我拉刷新
SwipeRefreshLayout swipeRefreshLayout = new SwipeRefreshLayout(listView.getContext());
if (listView.getParent() != null) {
final ViewGroup parent = (ViewGroup) listView.getParent();
final int index = parent.indexOfChild(listView);
parent.removeViewAt(index);
parent.addView(swipeRefreshLayout, index);
listView.setVisibility(View.VISIBLE);
}
swipeRefreshLayout.addView(listView);
swipeRefreshLayout.setOnRefreshListener(...) { }
上面的代碼添加swipeRefreshLayout到母體(在該列表視圖當前處於的位置),然後將列表視圖作爲swipeRefreshLayout的孩子。
當我進行刷新時,會進行網絡調用 - 數據被提取,存儲在數據庫中,並使用CursorAdapter加載。
問題:
當我拉來刷新,我看到空白屏幕一秒鐘,並與所有的項目的UI更新自己。但是當空白屏幕顯示並且我觸摸屏幕時,它會響應點擊事件並立即顯示ListView。
我需要ListView在顯示數據時(PTR視圖顯示時)顯示所有的時間,並在新數據可用時立即更新。
有什麼我做錯了嗎?我已經嘗試通過發佈一個可運行的SwipeRefreshLayout並獲取新數據來將setRefreshing運行爲true。我不認爲這與數據獲取有什麼關係。
適配器在空白屏幕出現時沒有被更改(這意味着ListView應該仍然可見)。
任何想法?
我改變了我的代碼,以便在XML中包含SwipeRefreshLayout而不是動態添加它,而且我仍然看到了問題。 – sr09