2015-12-06 3 views
1

Я создал arraylist для кнопок и tablerows.Кнопка Android ArrayList onClickListener не работает. Зачем?

private ArrayList<Button> btDec = new ArrayList<Button>(); 
private ArrayList<TableRow> tr = new ArrayList<TableRow>(); 

Тогда я хочу, чтобы создать новую кнопку и TableRow и добавить ПЭМ к TableLayout, используя следующий код в методе OnCreate().

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      btDec.add(new Button(this)); 
      tr.add(new TableRow(this)); 

      int i = tr.size() - 1; 
      btDec.get(i).setId(i); 
      btDec.get(i).setText("-"); 
      tr.get(i).addView(btDec.get(i)); 
      lo.addView(tr.get(i), new TableLayout.LayoutParams(TableLayout.LayoutParams.WRAP_CONTENT, TableLayout.LayoutParams.WRAP_CONTENT)); 
     } 
    }); 

Весь этот код работает нормально. Но следующий код (также в методе onCreate()) не работает. Если я нажму кнопку, ничего не произойдет, и он ничего не напечатает в Logcat.

for(int i = 0; i < tr.size(); i++) 
    { 
     btDec.get(i).setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View view) 
      { 
       Log.i("ButtonListener", "test"); 
      } 
     }); 
    } 

Пожалуйста, помогите мне.

ответ

0

Проблема с этим кодом

for(int i = 0; i < tr.size(); i++) 
    { 
     btDec.get(i).setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View view) 
      { 
       Log.i("ButtonListener", "test"); 
      } 
     }); 
    } 

Вы не можете сделать это в onCreate(), потому что tr список там пусто! Вы должны добавить слушателя onClick при создании кнопки.