在我的项目中,我从服务器获得了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());
}
}
}
答案 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());