2010-08-29 28 views
0

我有一個ListView,我使用LinearLayouts來填充每個CheckBox。 LinearLayout是爲我從Web服務返回的每個對象動態添加的。 我需要一個用戶能夠點擊完成按鈕,並讓應用程序通過CheckBox列表並更新每個選中項目的數據庫。數據庫和完成按鈕是小菜一碟,但是到目前爲止,獲得對複選框的引用或製作副本,以及如何選擇查看它,CheckBox已經讓我難倒了好幾天。複製視圖對象

我的代碼以現在這個過程看起來是這樣的:

私人的ListView列表=(ListView控件)findViewById(R.id.list);

LinearLayout temp; CheckBox curr;對於(int i = 0; i < List.getChildCount(); i ++){ temp =(LinearLayout)List.getChildAt(i); curr =(CheckBox)temp.getChildAt(1); 如果(curr.isChecked())儘快{// 做的東西在這裏 }}

我嘗試引用或者臨時對象或對象CURR程序崩潰。所以在上面的代碼中,它在curr.isChecked()中崩潰。我之前發現,如果您忘記CheckBox被包裝在LinearLayout中,並嘗試將LinearLayout對象複製到CheckBox對象,程序崩潰,所以我知道系統會看到要複製的正確對象,即使在curr副本中也是如此。然而,如果我嘗試記錄臨時類的類型,如下所示: Log.d(「temp Class type」,temp.getClass()。toString()); 系統崩潰

但是,以下工作完全正常... Log.d(「List Class type」,List.getChildAt(i).getClass()。toString());

我現在唯一能想到的是我需要在某處重載一個副本構造,但是我找不到任何建議你如何開始這個或者複製函數可能被調用的東西。即使谷歌代碼搜索已經證明對我來說沒有結果...

我有一種感覺,這只是我正在看完全180度的錯誤方式,這將是可笑的簡單,但如果有一種方法將模擬器從屏幕上撕下並將其穿過牆壁現在我已經完成了,請幫助!

-David

...並提前致謝。

回答

0

Java語言通過引用工作,當您編寫複選框curr = [複選框類型的表達式]時,您不復制複選框對象。爲了幫助您解決問題,查看崩潰的堆棧跟蹤(您可以在日誌中找到它)會非常有幫助。

+0

08-29 06:46:14.823:DEBUG/AndroidRuntime(1086):關閉虛擬機 08:06:46:14.823:WARN/dalvikvm(1086):threadid = 3:線程正在以未捕獲的異常退出(group = 0x4001b188) 08-29 06:46:14.833:ERROR/AndroidRuntime(1086) :未捕獲的處理程序:由於未捕獲的異常導致主線程退出 08-29 06:46:14.863:錯誤/ AndroidRuntime(1086):java.lang.NullPointerException 08-29 06:46:14.863:ERROR/AndroidRuntime(1086): at cards.pkg.Select.auditDB(Select.java:376) 08-29 06:46:14.863:ERROR/AndroidRuntime(1086):at cards.pkg.Select.access $ 6(Select。java:335) – 2010-08-29 06:49:49

+0

08-29 06:46:14.863:ERROR/AndroidRuntime(1086):at cards.pkg.Select $ 2 $ 1.onClick(Select.java:90) 08-29 06:46:14.863:ERROR/AndroidRuntime(1086):at android.view.View.performClick(View.java:2364) 08-29 06:46:14.863:ERROR/AndroidRuntime(1086):at android.view.View.onTouchEvent(View.java: 4189) 08:06:46:14.863:ERROR/AndroidRuntime(1086):at android.widget.TextView.onTouchEvent(TextView.java:6534) 08-29 06:46:14.863:ERROR/AndroidRuntime(1086) :at android.view.View.dispatchTouchEvent(View.java:3709) – 2010-08-29 06:50:23

+0

08-29 06:46:14.863:ERROR/AndroidRuntime(1086):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883) 08 -29 06:46:14.863:ERROR/AndroidRuntime(1086):at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883) 08- 29 06:46:14.863:錯誤/ AndroidRuntime(1086):在android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:883) 08-29 06:46:14.863:錯誤/ AndroidRuntime(1086):at android.view .ViewGroup.dispatchTouchEvent(ViewGroup.java:883) – 2010-08-29 06:51:07