复制视图对象

问题描述:

我有一个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

...并提前致谢。

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