2013-05-03 3 views
-1

int numberofbutton=x; будет предоставлен.Алгоритм для циклизации трех кнопок в TableRow

Я попытался зациклиться, но я потерпел неудачу, потому что numberofbutton должен быть делимым на 3. Я не могу написать алгоритм.

Основываясь на numberofbutton, мы должны программировать три кнопки в TableRow.
Я имею в виду, если numberofbutton является ,

TableRow[0]->Button Button Button 
TableRow[1]->Button 

Если это ,

TableRow[0]->Button Button Button 

UPDATE: На основании ответа ZouZou, в код ниже, но не решена, так как тр [ ] не определено:

int bn = 9; 
     if (bn % 3 == 0) { 
      TableRow[] tr = new TableRow[bn/3]; 
      for (int i = 1; i <=(bn/3); i++) { 
       tr[i] = new TableRow(this); 
      } 
     } else { 
      TableRow[] tr = new TableRow[(bn/3) + 1]; 
      for (int i = 1; i <=(bn/3) + 1; i++) { 
       tr[i] = new TableRow(this); 
      } 
     } 
     Button[] b=new Button[bn]; 
     for(int i=1;i<=bn;i++){ 
      b[i]=new Button(this); 
     } 
     int index = -1; 
     for (int i = 0; i < bn; i++) { 
      if(i%3==0){ 
       index+=1; 
       tr[index].addView(b[i]); 
      }else{ 
       tr[index].addView(b[i]); 
      } 
     } 


UPDATE:

Полный код, но почему она не работает ?:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     TableLayout tL = (TableLayout) findViewById(R.id.table); 

     int bn = 9; 

     TableRow[] tr = null; 

     if (bn % 3 == 0) { 
      tr = new TableRow[bn/3]; 
      for (int i = 1; i <= (bn/3); i++) { 
       tr[i] = new TableRow(this); 
      } 
     } else { 
      tr = new TableRow[(bn/3) + 1]; 
      for (int i = 1; i <= (bn/3) + 1; i++) { 
       tr[i] = new TableRow(this); 
      } 
     } 

     Button[] b=new Button[bn]; 

     for(int i=1;i<=bn;i++){ 
      b[i]=new Button(this); 
     } 

     int index = -1; 

     for (int i = 0; i < bn; i++) { 
      if(i%3==0){ 
       index+=1; 
       tr[index].addView(b[i]); 
       tL.addView(tr[index]); 
      }else{ 
       tr[index].addView(b[i]); 
      } 

     } 

    } 


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TableLayout 
     android:id="@+id/table" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="59dp" 
     android:layout_marginTop="44dp" > 
    </TableLayout> 

</RelativeLayout> 
+0

вау !! WTF ?? -1 по этому вопросу. пока никто не может представить полный пример. человек -1 должен решить этот вопрос. или он/она может быть дураком, делая -1. –

ответ

1

Вы можете использовать по модулю для выполнения таких операций:

int index = -1; 

for(int i = 0; i < numberButtons; i++){ 
     if(i%3 == 0) { 
      index += 1; 
      tableRow[index] <- add Button here //here it's a new row we update the index 
     } 
     else 
      tableRow[index] <- add Button here //we can add button to the current index 
              //because there are less than 3 buttons 
} 

EDIT:

Заменить:

int bn = 9; 
     if (bn % 3 == 0) { 
      TableRow[] tr = new TableRow[bn/3]; 
      for (int i = 1; i <=(bn/3); i++) { 
       tr[i] = new TableRow(this); 
      } 
     } else { 
      TableRow[] tr = new TableRow[(bn/3) + 1]; 
      for (int i = 1; i <=(bn/3) + 1; i++) { 
       tr[i] = new TableRow(this); 
      } 
     } 

By:

int bn = 9; 
TableRow[] tr = null; 
     if (bn % 3 == 0) { 
      tr = new TableRow[bn/3]; 
      for (int i = 1; i <=(bn/3); i++) { 
       tr[i] = new TableRow(this); 
      } 
     } else { 
      tr = new TableRow[(bn/3) + 1]; 
      for (int i = 1; i <=(bn/3) + 1; i++) { 
       tr[i] = new TableRow(this); 
      } 
     } 
+0

при добавлении кнопок, значение массива? Я имею в виду кнопку [index] или кнопку [i]? –

+1

Вы добавляете новую кнопку каждый раз или существующие кнопки? –

+0

см. Мой вопрос обновлен. не может решить об объявлении TableRow []. –

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