当我尝试获取CheckBox的Id时遇到困难

时间:2014-10-17 05:07:08

标签: android checkbox

在我的项目中,我从服务器获得了30个要求。我在CheckBox中显示了所有内容。所以基于需求大小我在循环内创建CheckBox。我还为CheckBoxes设置了Id。我再次从服务器获取Id,并将相同的ID设置为CheckBoxes。

for(int i=0;i<require.size();i++)
    {
        //From Requirements
        requirement=require.get(i);
        RelativeLayout rl1 = new RelativeLayout(getActivity());
        rl1.setBackgroundResource(R.drawable.listviewdesign);
        l1.setOrientation(LinearLayout.VERTICAL);
        req1 = new CheckBox(getActivity());
        rl1.addView(req1);
        req1.setId(Integer.parseInt(requirement.r_id));
        Log.i("getid",Integer.toString(req1.getId()));
        li.add(Integer.toString(req1.getId()));
    }

现在问题出在30个CheckBox中,只检查了2个CheckBox。我从服务器收到了5个CheckBoxes ID。我还将2个CheckBoxes Id与上面的CheckBoxes Id进行了比较。这里的问题是第二个CheckBox只设置为true。第一个CheckBox没有设置为true(2个CheckBox中有2个)。我做错了吗?请指导我。

for(int i=0;i<li.size();i++)
    {
        //li.get(i);
        req1 = (CheckBox) container.findViewById(i);
        String sr = req1.toString();
        for(int j=0;j<proj_require1.size();j++)
        {
            pr = proj_require1.get(j);
            if(sr.equals(pr.rid))
            {
                req1.setChecked(!req1.isChecked());
            }
            else
            {
                req1.setChecked(req1.isChecked());
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

在以下行中:

req1 = (CheckBox) container.findViewById(i);

你确定它的findViewById(i); ?而不是li.get(i)其中li显然是来自服务器的ID数组。

即。尝试:req1 = (CheckBox) container.findViewById(li.get(i));

此外,如果您将Id与Id进行比较,则还会修改:

String sr = req1.toString();String sr = Integer.toString(req1.getId());