2015-02-07 97 views
0

我正在編寫一個應用程序,它需要一個佈局中的86個小方形按鈕 - 最好是6列。我想參考按鈕來顯示不同的圖像,這取決於按下的按鈕。我使用相對佈局>滾動視圖(XML),然後使用86個單獨的按鈕進行編碼,但它看起來像是一個業餘解決方案。使用Eclipse的Android應用程序 - 創建按鈕陣列

有人可以告訴我如何用正確的方式直接在Java類中用不同的id編碼一個相同按鈕的數組嗎? (順便說一下,我已經盡力找到谷歌這個答案,但是當我搜索這個問題的變體時,我總是得到關於JButton的教程,我相信這些教程不能用在android應用程序中)。

在此先感謝。

回答

0

這可能有助於

public class Test extends Activity{ 

List<Button> buttonList; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    buttonList=new ArrayList<Button>(); 
    Button doneButton=(Button)findViewById(R.id.your_final_button); 
    ScrollView view=(ScrollView)findViewById(R.id.your_scroll_view); 
    view.addView(tableLayout(20));//20 rows 
    doneButton.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      for(Button b : buttonList){ 
       b.getText();//whatever you wanna do 
      } 

     } 
    }); 

} 
private TableLayout tableLayout(int count) { 
    TableLayout tableLayout = new TableLayout(this); 
    tableLayout.setStretchAllColumns(true); 
    tableLayout.setBackgroundColor(Color.WHITE); 
    int noOfRows = count ; 
    for (int i = 0; i < (noOfRows+1); i++) { 
     int rowId = 3 * i; 
     tableLayout.addView(createOneFullRow(rowId)); 
    } 

    return tableLayout; 
} 

private TableRow createOneFullRow(int rowId) { 
    TableRow tableRow = new TableRow(this); 
    tableRow.setPadding(0, 10, 0, 0); 
    //6 columns 
    tableRow.addView(createButton("text1")); 
    tableRow.addView(createButton("text2")); 
    tableRow.addView(createButton("text3")); 
    tableRow.addView(createButton("text4")); 
    tableRow.addView(createButton("text5")); 
    tableRow.addView(createButton("text6")); 

    return tableRow; 
} 
private View createButton(String string) { 
    // TODO Auto-generated method stub 
    Button button = new Button(this); 

    button.setText(string); 
    buttonList.add(button); 

    return button; 
} 

}

+0

謝謝你這麼多努力爲您回答這個問題。我期待着嘗試代碼。我很抱歉,我不能投票,我還沒有15分。 – cd141186 2015-02-07 22:37:28

+0

我認爲你可以接受答案而不是投票。 – 2015-02-09 05:58:23

+0

太棒了。我會看看如果我可以得到它的工作。 – cd141186 2015-02-09 13:46:21