java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
生活随笔
收集整理的這篇文章主要介紹了
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我也出過一樣的錯,在 查詢語句 那邊打印一下? 你查出來的數據? 查出來了沒有,查出來了就 看你Activity 里面寫的 接受收數據的 哪個方法? 接收數據是不是 超過了 你查的 數據,我的是這樣的,我之前數據全部查出來了,但是就是因為? 利用數據的地方? 得到的比他實際的大。。仔細看一下。。。就這兩個地方。。。
根本原因:你的代碼本身就有問題,在進行數組取值之前,沒有進行驗證判斷;
之前沒有報錯,是因為存在數據,而今天沒有數據了,你的數組length為0,而你還在取array[0],當然就數組下標越界了!
就是數組越界了,意思是你某個地方調用了數組的下標為3但是這個數組的實際大小是0。所以有這種錯誤。你檢查一下你的代碼看哪里調用某個數組。| Invalidindex 0, size is 0 表示看到這個很蛋疼。。。 難道你在 list.get(index) 的時候不先判斷? if(list!=null && list.size()>0){ ? ???list.get(index); } 不先判斷么? 然后你再看做了什么之后你的list是變為size = 0的 |
? ???templist = dboperator.RecordList();
? ???dboperator.close();
這個是我刷新數據的操作,但是我沒有把從數據庫刷新得到的arraylist傳給我綁定adapter的recordlist,recordlist竟然自己刷新了?程序運行結果正確,可有時候就是會出現我所遇到的問題,請問是為什么呢? dboperator.queryRecord();
? ???templist = dboperator.RecordList();
? ???dboperator.close();
看你代碼看的不是很詳細,這個一般就是這樣的,在list里面去取數據的時候,我對這個數據進行操作的時候,但是發現這個數據已經沒有了。比如說,我在list里面要去刷新第七個數據,但是這個時候列表只有六個。 我大概知道什么意思了。
我的設計思路是這樣的:我要刷新listview,首先重新查詢數據庫得到一個新的list,然后執行adapter.notifyDataSetChanged(),從而刷新listview。是不是因為我得到list的操作是在異步進程,主線程刷新listview的時候,list的操作還沒完成界面刷新出現異常?但asyncTask不是要先等doInBackground執行完返回result,再執行onPostExecute從而刷新界面嗎?
另外我有一個很困惑的地方,綁定了adapter的list一開始就被我指向了一個我自定義的數據庫類查詢得到的querylist,即使我沒有給list加數據,只要執行了查詢數據庫得到了新的querylist,list也會自動刷新。是因為我一開始list就指向了querylist,只要querylist更新了,list也會自動更新嗎? 首先重新查詢數據庫得到一個新的list? ?你的這個新的list是如何執行刷新的,
adapter.notifyDataSetChanged()的刷新是你在原有的list基礎上
如果是新的list,你最簡單的是直接做setadapter。
asyncTask是在執行結束的時候才返回的。
只要執行了查詢數據庫得到了新的querylist,list也會自動刷新??這個時候你應該是執行了??notifyDataSetChanged或者重新綁定了數據,如果你沒有做操作是不會自動更新的
總結
以上是生活随笔為你收集整理的java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android.content.Acti
- 下一篇: Android 开发之多线程处理、Han