在我的项目中的待办审核模块发现一个待办事件有多个发布渠道和审核内容。
所以之前在XML写死的布局代码已经不能使用了。
由于发布渠道和审核内容的界面布局是固定的,所以想到了用Include标签动态添加的方式来做。
for(int i=0;i<channels.size();i++){//循环看有几个发布渠道和发布内容的Model类
View LayoutView=getLayoutInflater().inflate(R.layout.todo_list_include, null);//然后引入一次Include标签作为一个View来使用
LayoutView.setId(i);
includeLayout.addView(LayoutView);//在指定的区域中添加这个View
String[] checkedPoint=channels.get(i).getChannelName().split(";");
List<CheckBox> tempCheckBoxList=new ArrayList<CheckBox>();
tempCheckBoxList.add((CheckBox)LayoutView.findViewById(R.id.CheckBox1));//在指定的Include的View中将多选按钮中初始化
tempCheckBoxList.add((CheckBox)LayoutView.findViewById(R.id.CheckBox2));
tempCheckBoxList.add((CheckBox)LayoutView.findViewById(R.id.CheckBox3));
tempCheckBoxList.add((CheckBox)LayoutView.findViewById(R.id.CheckBox4));
tempCheckBoxList.add((CheckBox)LayoutView.findViewById(R.id.CheckBox5));
tempCheckBoxList.add((CheckBox)LayoutView.findViewById(R.id.CheckBox6));
tempCheckBoxList.add((CheckBox)LayoutView.findViewById(R.id.CheckBox7));
((CheckBox)LayoutView.findViewById(R.id.CheckBox1)).setEnabled(false);
((CheckBox)LayoutView.findViewById(R.id.CheckBox2)).setEnabled(false);
((CheckBox)LayoutView.findViewById(R.id.CheckBox3)).setEnabled(false);
((CheckBox)LayoutView.findViewById(R.id.CheckBox4)).setEnabled(false);
((CheckBox)LayoutView.findViewById(R.id.CheckBox5)).setEnabled(false);
((CheckBox)LayoutView.findViewById(R.id.CheckBox6)).setEnabled(false);
((CheckBox)LayoutView.findViewById(R.id.CheckBox7)).setEnabled(false);
for(int j=0;j<checkedPoint.length;j++){
tempCheckBoxList.get(Integer.parseInt(checkedPoint[j])).setChecked(true);
//CheckBox_List.get(Integer.parseInt(checkedPoint[j])).setChecked(true);
}
((TextView)LayoutView.findViewById(R.id.content)).setText(BaseTools.ToDBC(channels.get(i).getContcent()));/在指定的Include的View中将ID为Content的TextView初始化并赋值
}
从这段代码中我们可以看到 我们将Include标签当作了一个Fragment来使用了,并将新增的Include标签加入到指定的布局位置上去。
但无论是初始化Include中的组件还是对Include中的组件赋值,基本上和Fragment的写法都是一样的。