2011-03-07 69 views
2

我正在使用同一個onClick偵聽器處理多個項目。使用具有多個視圖的相同onClick偵聽器

當我點擊我想知道哪一個。

我知道我可以在getId()上做Switch語句,但寧願能夠獲取該項目的名稱。 有沒有簡單的方法來做到這一點?

+1

什麼時,你說該項目的名稱意思? – 2011-03-07 20:11:45

回答

1

我想你說的「獲取名稱」是指資源中的id字符串。所以你會有一個開關語句,如:

switch(view.getId()) { 
    case R.id.HomeButtonOne: 
     // Do Button One Action 
     break; 
    case R.id.HomeButtonTwo: 
     // Do Button Two Action 
     break; 
} 

否則請詳細說明你正在努力實現什麼。

+0

我想要這個名字的原因是它給了我一個向量的指針。名字的最後一個字母是一個數字,它會給我指針。 – theblitz 2011-03-16 08:12:07

+0

那麼,如果你使用上面的代碼,只需設置取決於視圖ID向量的指針,如果速度是一個問題和記憶是不是一個巨大的關注,那麼爲什麼不使用HashMap來獲得更快的查找,使用id作爲關鍵。注意:我要說的是停止將此稱爲「名稱」,ID表示一個整數,並且您所指的「名稱」是變量名稱。爲了找出變量名,上面的簡單switch語句給了你。 – 2011-03-16 12:44:08

+0

也許你可以添加一個獨特的android:標記字符串到XML中的每個按鈕。然後你可以使用view.getTag(「myTag」)來獲取'數據'。我不確定這是你需要什麼,但我發表評論,以防萬一任何人都可以使用它。 – 2011-11-19 23:06:01

0

您有幾個選項。

  1. 您可以使用您創建的類來擴展視圖,幷包含其他可識別信息。然後在onClick中,將視圖轉換爲您的類類型。

  2. 您可以使用Adapter更好地管理您的觀點。如果您顯示的是數據視圖而非惰性佈局或Drawable,則此功能效果最佳。

這要歸結爲你想要存儲什麼和你正在查看什麼。

0

只是要它實現OnClickListner類,並設置一個實例,以您的觀點:

class MyListener implements OnClickListener() { 
// ... 
} 

MyListener listener = new MyListener(); 

View view = (View) findViewById(R.id.myViewId); 
view.setOnClickListener(listener); 
view = (View) findViewById(R.id.myAnotherViewId); 
view.setOnClickListener(listener); 

... 
+0

因爲它們都一樣,它有什麼用?我曾考慮爲每個項目編寫一個監聽器,但擔心多個實例的開銷。 – theblitz 2011-03-16 08:15:49

相關問題