引用checkBoxes

时间:2013-08-16 11:24:42

标签: android checkbox

正在使用的程序正在使用api来收集所需的所有信息,从而使活动非常动态。由于这种动态特性,表示布局,例如x.xml用于指定这些元素的样式。 布局包含标题,信息和复选框。我遇到的问题是我只能参考布局的最后一个复选框,因为它们都具有布局中指定的相同ID。有什么方法可以引用/循环遍历布局中的所有复选框?不只是使用这种布局的最后一个复选框元素?

布局文件

包含以下内容:

<TextView>
<TextView>
<CheckBox android:id>

java类下面的代码引用它:

CheckBox check =(CheckBox)findViewById(R.id.checkBox);
check.setOnClickListener .... 

因为我正在使用apis,所以我使用AsyncTask's OnPostExecute来填写活动。

2 个答案:

答案 0 :(得分:2)

使用droidQuery库非常简单。在您的活动中,请将其命名为:

$.with(this).selectByType(Checkbox.class.getName()).each(new Function() {
    @Override
    public void invoke($ droidQuery, Object... params) {
        Checkbox cb = (Checkbox) droidQuery.view(0);
        //TODO: manipulate each checkbox here.
    }
});

要添加点击监听器,只需添加链式呼叫click(相反,或在结尾处):

通过iteself

$.with(this).selectByType(Checkbox.class.getName()).click(new Function() {
    @Override
    public void invoke($ droidQuery, Object... params) {
        Checkbox cb = (Checkbox) droidQuery.view(0);
        //TODO: handle the clicked Checkbox
    }
});

链式通话

$.with(this).selectByType(Checkbox.class.getName()).each(new Function() {
    @Override
    public void invoke($ droidQuery, Object... params) {
        Checkbox cb = (Checkbox) droidQuery.view(0);
        //TODO: manipulate each checkbox here.
    }
}).click(new Function() {
    @Override
    public void invoke($ droidQuery, Object... params) {
        Checkbox cb = (Checkbox) droidQuery.view(0);
        //TODO: handle the clicked Checkbox
    }
});

答案 1 :(得分:1)

如果所有复选框都具有相同的ID,那么您将只获得一个对它们的引用。也许尝试创建一个视图,并逐步创建CheckBoxes以将它们添加到视图中。然后,您可以使用HashMap<String, Checkbox>,其中您的字符串是复选框的ID,因此您可以在运行时检索正确的复选框。