复制视图对象

时间:2010-08-29 05:52:23

标签: android

我有一个ListView,我用LinearLayouts填充每个包含一个CheckBox。 LinearLayout是为我从我所拥有的Web服务返回的每个对象动态添加的。 我需要用户能够单击完成按钮并让应用程序浏览CheckBox列表并更新每个已检查项目的数据库。数据库和完成按钮是一块蛋糕,但到目前为止,获取对CheckBox的引用或制作副本,以及您选择查看它的方式已经困扰了我好几天。

到目前为止,此代码的代码如下所示:

私有ListView List =(ListView)findViewById(R.id.list);

LinearLayout temp; CheckBox curr;

for(int i = 0; i< List.getChildCount(); i ++){    temp =(LinearLayout)List.getChildAt(i);    curr =(CheckBox)temp.getChildAt(1);    if(curr.isChecked()){       //在这里做点什么    } }

一旦我尝试引用临时对象或curr对象,程序就会崩溃。所以在上面的代码中它崩溃了curr.isChecked()。我之前发现,如果你忘记CheckBox被包装在一个LinearLayout中并尝试将一个LinearLayout对象复制到一个CheckBox对象,那么程序会崩溃,所以我知道系统会看到要复制的正确对象,即使是在curr copy ...但是,如果我尝试记录这样的临时类类型 Log.d(“temp Class type”,temp.getClass()。toString()); 系统崩溃

然而以下工作完全正常...... Log.d(“List Class type”,List.getChildAt(i).getClass()。toString());

我现在唯一可以想到的是我需要在某处重载一个复制构造,但我找不到任何建议你如何开始这个或者可能调用复制函数的东西。甚至谷歌代码搜索对我来说都没有结果......

我有一种感觉这只是我正在以完全错误的方式看待180度并且它会变得非常简单,但是如果有办法将模拟器从屏幕上撕下来并将它扔到墙上我本来可以做到的,请帮忙!

-David

...并提前感谢。

1 个答案:

答案 0 :(得分:0)

Java语言通过引用工作,当您编写Checkbox curr = [类型复选框的表达式]时,您不会复制Checkbox对象。为了帮助您解决问题,查看崩溃的堆栈跟踪非常有用(您可以在日志中找到它。)