2013-02-15 3 views
0

мое приложение включает в себя кнопку, которая динамически добавляет поля EditText на каждом клике. То, что я намереваюсь сделать, - установить идентификатор для каждого из добавленных полей. Я делаю это с помощью метода setId(). Но я не могу ссылаться на недавно добавленные поля. Можно ли установить идентификатор, используя любой цикл, а затем ссылку на этот идентификационный номер? Мой код выглядит следующим образом:подсчет числа динамически добавленных элементов в android

super.onCreate(savedInstanceState); 
    setContentView(R.layout.time_table); 
    l1 = (LinearLayout) findViewById(R.id.linear1); 
    edit = (EditText) findViewById(R.id.editText1); 
    // tv = (TextView)findViewById(R.id.textView1); 
    b1 = (Button) findViewById(R.id.button1); 
    b2 = (Button) findViewById(R.id.button2); 

    b1.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 

      int i = 0; 
      ed = new EditText(Table.this); 
      l1.addView(ed); 
      ed.setHint("Column Name"); 
      ed.setId(i); 
      i++; 
      int n = ed.getId(); 
      EditText editn = (EditText) findViewById(n); 
      editn.setText("new item"); 
     } 
    }); 
+2

Вы объявляете переменную 'i' внутри метода' onclick', поэтому все поля редактирования будут иметь идентификатор 0. Объявляя вашу переменную 'i', как переменную класса может устранить проблему ... Также пытаюсь установить идентификатор перед добавив его в макет ... –

ответ

1

Просто счета переменной:

int count = 100; 

каждый раз, когда вы создаете View, setId(count + 1);

получить последний вид R.id.count, подобно другим.

Более элегантный soultion будет:

Каждый раз, когда вы установите ID, хранить идентификатор в ArrayList.

Смежные вопросы