2014-03-19 109 views
0

期間陣列按鈕的排列位置,我有大概的大小超過20-30的按鈕的陣列。我的簡單問題是如何獲得已點擊的按鈕的數組索引?例如,我點擊btnDisplay [8],然後應用程序將敬酒「8」。就如此容易。但我不知道如何檢索排列按鈕的索引。獲得的onClick

switch (clickedButton.getId()) 
{ 
    case R.id.Button01: 
     // do something 
     break; 

    case R.id.Button01: 
     // do something 
     break; 
} 

如果我使用這段代碼,那麼我必須寫20-30例。會有更好的解決方案嗎?

我如何生成按鈕配置

public class MainActivity extends Activity { 
Button[] btnUpdate; 

public void onCreate(Bundle savedInstanceState) { 

//SOME CODE HERE 

jsonParser = new JSONParser(); 
jObj = jsonParser.getJSONFromUrl(URL); 

btnUpdate = new Button[jObj.length()]; 

for(int i=0;i<jObj.length();i++) 
{ 
btnUpdate[i] = new Button(getApplicationContext()); 
btnUpdate[i].setText("Edit"); 
btnUpdate[i].setHeight(50); 
} 
+0

使用setTag()GE tTag()方法。發佈如何創建按鈕並添加到陣列 –

+0

可以發佈您的按鈕創建代碼? –

+0

@BirajZalavadia我編輯了我的問題。請看看 – Wan999

回答

1

嘗試這種方式

for (int i = 0; i < jObj.length(); i++) { 
      btnUpdate[i] = new Button(getApplicationContext()); 
      btnUpdate[i].setText("Edit"); 
      btnUpdate[i].setHeight(50); 
      btnUpdate[i].setTag(i); //ADD THIS LINE. 
     } 


void onClick(View v) { 

     int index = (Integer) v.getTag(); 
     Toast.makeText(getApplicationContext(), "BtnClicked"+index, Toast.LENGTH_SHORT).show(); 

    } 
+0

就像一個魅力。謝謝 ! – Wan999

0

不知怎的,嘗試使用btnDisplay.indexof();它工作在C#我不知道關於Java

+0

nope。它不起作用。謝謝 – Wan999

0

嘗試是這樣的

void onClick(View v) 
{ 
    int index = 0; 
    for (int i = 0; i < buttonArray.length; i++) 
    { 
     if (buttonArray[i].getId() == v.getId()) 
     { 
     index = i; 
    Toast.makeText(getApplicationContext(), "BtnClicked"+index, Toast.LENGTH_SHORT).show(); 
     break; 
     } 
    } 


} 
+0

不起作用,但我忘了提及按鈕數組是以編程方式生成的。如果我使用這個代碼,無論我點擊了哪個按鈕,索引仍然是0.你能告訴我如何解決這個問題嗎?你的建議可能是一個可能的解決方案 – Wan999