動態添加Include標籤,本質就是把Include標籤當作一個Fragment就好了

在我的項目中的待辦審覈模塊發現一個待辦事件有多個發佈渠道和審覈內容。


所以之前在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的寫法都是一樣的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章