關于ListView與SwipeRefreshLayout結合,下拉刷新可能遇到的問題

對于Android開發來說,這兩個控件相信大家都不會陌生,ListView一個被用爛的控件,經常配合SwipeRefreshLayout來使用,SwipeRefreshLayout可以進行下拉刷新操作,但是我在使用的過程中,遇到了一個問題,那就是當我在下拉刷新時,處于正在刷新的狀態,再次下拉,就會報以下的錯誤

異常

下面我貼一段我寫的代碼

swipe.setOnRefreshListener(newSwipeRefreshLayout.OnRefreshListener() {

? ? ? ? @Override

? ? ? ? public void onRefresh() {

? ? ? ? ? ? ? data.clear();

? ? ? ? ? ? ? initData();

? ? ? ? ?}

});

可以看出我是在刷新的過程中將數據源清空,然后再次進行網絡請求,下載數據,更新適配器。這里我把問題出現的地方加粗了,就是這個data.clear()。

我們先分析一下報這個錯誤的原因

當我們進行下拉刷新時,這時候調用了onRefresh()這個方法,將數據源給清空了,然后我們再次點擊,這時候就可能會引起ListView的點擊觸摸事件,然而此時我們的數據是空的,也就會報數組越界的這個問題了。

我的解決方案是:

當我們在進行下拉刷新的時候,先不要急著把數據源清空,我們完全可以在網絡請求成功的回調方法里面進行這一個操作,這樣當我們在刷新的時候數據還是存在的,

StringRequest request =newStringRequest(Address.Latest_News,newResponse.Listener() {

? ? ? ? ? @Override

? ? ? ? ? public voidonResponse(String response) {

? ? ? ? ? ? ? ? ? if(response !=null) {

? ? ? ? ? ? ? ? ? ? ? ? try{

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//獲取今日熱聞的數據

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?data.clear();

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?LatestNews news =newLatestNews();

? ? ? ? ? ? ? ? ? ? ? ? ? ? news.parseJson(newJSONObject(response));

? ? ? ? ? ? ? ? ? ? ? ? ? ? data.add(news.getDate());

? ? ? ? ? ? ? ? ? ? ? ? ? ? List items = news.getItems();

? ? ? ? ? ? ? ? ? ? ? ? ? ?data.addAll(items);

? ? ? ? ? ? ? ? ? ? ? ? ? date= news.getTime();

? ? ? ? ? ? ? ? ? ? ? ? ? adapter.notifyDataSetChanged();

? ? ? ? ? ? ? ? ? ? ? ? ? swipe.setRefreshing(false);

? ? ? ? ? ? ? ? ? ? }catch(Exception e) {

? ? ? ? ? ? ? ? ? ? ? ? ? ? e.printStackTrace();

? ? ? ? ? ? ? ? ? ? }

? ? ? ? ? }

}

},newResponse.ErrorListener() {

? ? ? ? ? @Override

? ? ? ? ? public voidonErrorResponse(VolleyError error) {

? ? ? ? ? ? ? ? ? ?Toast.makeText(context,"網絡好像不太好", Toast.LENGTH_SHORT).show();

? ? ? ? ?}

});

醬紫,問題就解決了。這個問題可以說很小白,我恰好也是個小白,所以犯了這個錯誤。希望這個文章能幫大家解決問題。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,242評論 25 708
  • 國家電網公司企業標準(Q/GDW)- 面向對象的用電信息數據交換協議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 11,141評論 6 13
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,915評論 18 139
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,229評論 4 61
  • 其實哈還可以和jq 合作的,但是呢需要頁面引用了jq,不知道如果沒應用,我可以先excute_script執行插入...
    dittoyy3991閱讀 358評論 0 0