我正在使用同一個onClick偵聽器處理多個項目。使用具有多個視圖的相同onClick偵聽器
當我點擊我想知道哪一個。
我知道我可以在getId()上做Switch語句,但寧願能夠獲取該項目的名稱。 有沒有簡單的方法來做到這一點?
我正在使用同一個onClick偵聽器處理多個項目。使用具有多個視圖的相同onClick偵聽器
當我點擊我想知道哪一個。
我知道我可以在getId()上做Switch語句,但寧願能夠獲取該項目的名稱。 有沒有簡單的方法來做到這一點?
我想你說的「獲取名稱」是指資源中的id字符串。所以你會有一個開關語句,如:
switch(view.getId()) {
case R.id.HomeButtonOne:
// Do Button One Action
break;
case R.id.HomeButtonTwo:
// Do Button Two Action
break;
}
否則請詳細說明你正在努力實現什麼。
我想要這個名字的原因是它給了我一個向量的指針。名字的最後一個字母是一個數字,它會給我指針。 – theblitz 2011-03-16 08:12:07
那麼,如果你使用上面的代碼,只需設置取決於視圖ID向量的指針,如果速度是一個問題和記憶是不是一個巨大的關注,那麼爲什麼不使用HashMap來獲得更快的查找,使用id作爲關鍵。注意:我要說的是停止將此稱爲「名稱」,ID表示一個整數,並且您所指的「名稱」是變量名稱。爲了找出變量名,上面的簡單switch語句給了你。 – 2011-03-16 12:44:08
也許你可以添加一個獨特的android:標記字符串到XML中的每個按鈕。然後你可以使用view.getTag(「myTag」)來獲取'數據'。我不確定這是你需要什麼,但我發表評論,以防萬一任何人都可以使用它。 – 2011-11-19 23:06:01
您有幾個選項。
您可以使用您創建的類來擴展視圖,幷包含其他可識別信息。然後在onClick中,將視圖轉換爲您的類類型。
您可以使用Adapter更好地管理您的觀點。如果您顯示的是數據視圖而非惰性佈局或Drawable,則此功能效果最佳。
這要歸結爲你想要存儲什麼和你正在查看什麼。
只是要它實現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);
...
因爲它們都一樣,它有什麼用?我曾考慮爲每個項目編寫一個監聽器,但擔心多個實例的開銷。 – theblitz 2011-03-16 08:15:49
什麼時,你說該項目的名稱意思? – 2011-03-07 20:11:45