2012-04-24 24 views
0

我正在開發Android 3.1及以上版本的應用程序。設置ID以唯一標識複選框

我正在開發一個動態表單生成器,我需要在編程上添加很多複選框。

表格將在其第一列有問題的表格,其他列將有複選框。

這是一段代碼,我添加複選框:

int optionsTotalNum = this.calculateColumsForBlock(block); 
      QuestionsGroup qGroup = block.getQuestionsGroup(); 
      for(int z = 0; z < qGroup.getQuestions().size(); z++) 
      { 
       tableRow = new TableRow(this); 
       Question q = qGroup.getQuestions().get(new Integer(z)); 
       params = new LayoutParams(this.optionWidth, this.rowHeight); 
       params.column = 0; 

       TextView optionName = new TextView(this); 
       optionName.setText(q.getQuestionText().toUpperCase()); 
       optionName.setGravity(Gravity.CENTER); 
       optionName.setLayoutParams(params); 
       tableRow.addView(optionName); 

       for (int index = 1; i < optionsTotalNum; i++) 
       { 
        params.column = index; 
        CheckBox check = new CheckBox(this); 

        int id = ((z + 1) * 100) + index; 
        check.setId(id); 
        check.setLayoutParams(params); 
        tableRow.addView(check); 
       } 
       table.addView(tableRow, new TableLayout.LayoutParams(
         LayoutParams.FILL_PARENT, 
         this.rowHeight)); 
      } 

我用int id = ((z + 1) * 100) + index;動態地創建IDS,但我不知道我是否會重複和ID。換句話說,我不確定我是否會有兩個相同ID的視圖。我知道所有的複選框都會有不同的ID,但我會有TextViewsTableLayoutTableRows,我不知道他們是否可以使用在CheckBox上使用的ID。

如果存在兩個具有相同ID的視圖,findViewById()會發生什麼?
我們可以在同一個ContentView上擁有兩個或多個具有相同ID的視圖嗎?
有沒有更好的方法來唯一標識所有複選框?

回答

1

嘛,因爲你是在運行時將它..你不必設置ID ..你可以把所有他們在一些收集它保持插入順序,並直接訪問它們... 如果你想繼續相同的想法..然後不要做任何複雜的東西在這裏..只是保持靜態計數器在課堂上的水平..設置它爲ID然後增加它...

+0

感謝您的回答。如果我用這些複選框創建一個集合,那麼我將只存儲對這些複選框的引用,不是嗎?我不會創造更多。對不起,但我的記憶管理知識是有限的。 – VansFannel 2012-04-26 08:25:19

+1

@VansFannel ..是的,這是正確的... – ngesh 2012-04-26 09:42:13

0

如果你想有(int)java.util.Date()。getTime() 此函數將以毫秒爲單位返回當前的日期和時間,並且始終是唯一的。 將此ID保存在數組(或另一個容器)中以供進一步參考。