1. 程式人生 > >listview更新資料時報異常

listview更新資料時報異常

04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime: FATAL EXCEPTION: main
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime: Process: com.zhyq.movefilelib, PID: 13822
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime: java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notification. Make sure the content of your adapter is not modified from a background thread, but only from the UI thread. Make sure your adapter calls notifyDataSetChanged() when its content changes. [in ListView(-1, class com.zhyq.movefilelib.base.ScrollOverListView) with Adapter(class android.widget.HeaderViewListAdapter)]
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.widget.ListView.layoutChildren(ListView.java:1555)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.widget.AbsListView.onTouchUp(AbsListView.java:3670)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.widget.AbsListView.onTouchEvent(AbsListView.java:3454)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at com.zhyq.movefilelib.base.ScrollOverListView.onTouchEvent(ScrollOverListView.java:321)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.View.dispatchTouchEvent(View.java:7714)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2210)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1945)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2216)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1959)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2068)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1515)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.app.Activity.dispatchTouchEvent(Activity.java:2475)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2016)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.View.dispatchPointerEvent(View.java:7894)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:3995)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3874)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3435)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3485)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3454)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3561)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3462)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3618)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3435)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3485)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3454)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3462)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3435)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:5580)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:5560)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:5531)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime:     at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:5660)
04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime: at android.view.InputEventRec

04-07 10:28:49.303 8704-8704/com.zhyq.movefilelib E/UpdateVersionActivity: syntax error, expect {, actual error, pos 0

最近在改版程式時,發現先前人留下的程式是各種坑啊。。。竟然爆出來了這個BUG。。。。

看程式碼:

data.addAll(dataMsg);
adapter.notifyDataSetChanged();    
獲取到資料後,直接data新增獲取到的最新資料。。。但是data還是初始化adapter時傳入的。。。data資料變化時,沒有更新adapter裡面的data啊。。。直接通知adapter更新還有屁用啊。。。。我覺著這個是一個非常低階的錯誤!類似的坑還有很多!

所以在adapter裡新增一個新的方法即可:

public void refreshData(List<? extends 
Map<String, ?>> data) { if(data!=null) { mData = data; } notifyDataSetChanged(); }
添加了refreshdata之後
if (adapter != null) {
    data.addAll(dataMsg);
adapter.refreshData(data);
}
這樣就OK了。。。。

繼續填坑之路~2016~~~加油!

相關推薦

listview更新資料時報異常

04-07 10:28:48.673 13822-13822/com.zhyq.movefilelib E/AndroidRuntime: FATAL EXCEPTION: main 04-07 10:28:48.673 13822-13822/com.zhyq.movef

5.03-mysql批量更新資料異常

來回測了幾次,複製sql到資料庫執行也沒錯。 導致的原因是:配置資料庫連線時url沒有配置allowMultiQueries=true屬性。 allowMultiQueries:允許多查詢. jdbc:mysql://localhost:3306/database?characte

Listview更新資料時崩潰The content of the adapter has changed but did not receive a notification.

說明:在工作中遇到的問題記錄下來,歡迎批評和指正~ 1、問題 在listView上下拉重新整理或者滑動過程中經常碰到這個復現率比較高的崩潰問題 E/AndroidRuntime(16779): j

JavaFx中ListView資料更新

android中的ListView使用的是Adapter的notifyDataSetChanged方法來更新UI, 在JavaFx中也有ListView,但是沒有adapter,自身也沒有提供更新的方法。 在資料被新增的時候,會自動更新UI顯示。但是當已新增的資料中某個屬

mysql(workbench)更新資料時候的一個異常

用mysql workbench 更新一個表的時候報如下異常: Error Code: 1175. To disable safe mode, toggle the option in Preferences -> SQL Editor -> Query

Hibernate插入資料時報org.hibernate.service.UnknownServiceException異常

異常的內容如下: org.hibernate.service.UnknownServiceException: Unknown service requested [org.hibernate.engine.jdbc.connections.spi.ConnectionPr

解決 mysql [Data Too Long..]資料更新失敗的異常

最近資料庫經常出現如下異常:  multiQuery Query Failed, ERRNO: 1406 (Data too long for column....) 解決方案: 1.檢查資料庫中該欄位的長度是否太小(如果欄位型別是字串型別(varchar,char)),

svn更新產生的異常

報告 cleanup tin resource --clean 時報 配置 lin oam 同步svn時差生的錯誤如下: 同步 SVNStatusSubscriber 時報告了錯誤。1 中的 0 個資源已經同步。 同步 /tunnel14 時發生錯誤:Error get

Spring Boot使用thymeleaf模板時報異常:template might not exist or might not be accessible by any of the configured Template Resolvers

logs pla 開頭 spring 方法 temp ring mode acc 錯誤如下: template might not exist or might not be accessible by any of the configured Template R

力軟敏捷開發框架7.0版本更新資料

成功 審批 權限 通過 版本更新 下拉 優化 www. 再次 感謝一直以來廣大用戶對力軟的支持,現將力軟敏捷框架7.0版本更新情況發布如下:1新添加了?1.多語言功能;?2.代碼生成器模版;a.可編輯列表代碼生成器(Excel風格)模版;b.報表現實代碼生成器模版;3.樹形

Laravel Scout - 實時更新資料至Algolia

在之前的一篇文章(Algolia Search - 使用Javascript實現前端實時搜尋 )裡,我們一起學習了怎麼使用Algolia,那麼今天我們一起來看一下,如何在Laravel中後臺實時更新資料索引至Algolia資料庫。 首先我們需要安裝Laravel Scout元件:

ListView更新介面的原理

       ListView是我們經常使用的一個控制元件。那麼,當我們刪除或者新增ListView中的一個item時,介面是如何更新的呢?為了及時更新介面,ListView使用了觀察者模式,在我們資料來源發生改變時,我們呼叫了notifyDatasetcha

layUi資料介面異常

問題: 後臺返回到前臺的json資料一直報資料介面異常 解決辦法: 第一,檢查自己返回的json資料格式是否正常,即:返回的資料格式是否是    {   code:0,   msg:"",   count:200,   data:[

mysql更新資料,條件為實時查詢出來的資料

--將更新條件儲存到臨時表裡 CREATE TABLE tmp3 AS (SELECT username FROM oa_user WHERE username NOT IN (SELECT username FROM nst_t_account)); --更新表資料,條件從臨時表裡取 UP

用JAVA連線SQL實現更新資料

在程式碼中更新資料 <%@ page language="java" contentType="text/html; charset=UTF-8" import="java.sql.*" pageEncoding="UTF-8"%> <!DOCTYPE html>

SQL之merge into 批量更新資料

    轉載:http://www.cnblogs.com/ruiati/archive/2013/01/18/2866017.html Merge關鍵字是一個神奇的DML關鍵字。它在SQL Server 2008被引入,它能將Insert,Update,Dele

SQL之merge into 批量更新資料 Merge關鍵字是一個神奇的DML關鍵字。它在SQL Server 2008被引入,它能將Insert,Update,Delete簡單的併為一句。M

轉載http://www.cnblogs.com/ruiati/archive/2013/01/18/2866017.html     Merge關鍵字是一個神奇的DML關鍵字。它在SQL Server 2008被引入,它能將Insert,Up

使用MERGE方便快捷地更新資料

在 SQL Server 2008 中,您可以使用 MERGE 語句,根據與源表聯接的結果,對目標表執行插入、更新或刪除操作。避免寫太多的IF……ELSE語句。 MERGE 語法包括五個主要子句:MERGE 子句:用於指定作為插入、更新或刪除操作目標的表或檢視。USING 子句:用於指定要與目標

ORACLE更新資料時如果有就更新沒有就插入

a表字段有user_id,status,heart_time三個欄位 b代表臨時資料表,將要比較的值作為b的user_id引數, ON (a.user_id = b.user_id)是比較,後面兩句話是兩條選擇 MERGE INTO 表名 a USING ( SELECT 引數值 as us

1-系統方案A(系統方案演示和執行第一個Android程式,ListView顯示資料,刪除資料)

系統教程初步要做到的就是12節和13節所演示的 12節:  https://www.cnblogs.com/yangfengwu/p/9966702.html 13節:  https://www.cnblogs.com/yangfengwu/p/9966901.html