我有一個循環,我創建了多個按鈕實例,並且每個實例都有一個TouchListener。但是,當我觸摸不同的按鈕時,我很難弄清楚如何管理。我試圖完成的是,每個按鈕代表一個文本視圖,當我觸摸按鈕,我想添加與按鈕的實例相關聯的特定文本視圖到一個數組列表。但是,當再次觸摸同一個按鈕時,我想將其從列表中刪除。如果再次觸摸,請再次將其添加回去。哦,是的addToOrder目前是全球性的,並初始化爲真。onTouch方法 - 確保點擊或按下按鈕的哪些實例
想法?
編輯****按照我下面的評論按鈕,現在是我編寫的Button的一個子類的一個實例,以便我可以輕鬆跟上每個按鈕的實例。這解決了這個問題。
這裏是代碼:
button.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
int action = event.getActionMasked();
//Log.d("Touched Add To Order Button with id of ", button.getId() + ": " + button.getText().toString());
TextView relativeTitleView;
ViewGroup relativeGroup = (ViewGroup)v.getParent();
relativeTitleView = (TextView) relativeGroup.getChildAt(0);
//Log.d("Add To Order Button Touched", relativeTitleView.getText().toString());
/*if(action ==MotionEvent.ACTION_DOWN){
addToOrder = (addToOrder) ? true : false;
if(addToOrder)
dbAccess.addToOrder(relativeTitleView.getText().toString());
else
dbAccess.removeFromOrder(relativeTitleView.getText().toString());
}
else if(action == MotionEvent.ACTION_UP){
addToOrder = !addToOrder;
}*/
if(action == MotionEvent.ACTION_DOWN){
if(button.getTouchInfo()){
dbAccess.addToOrder(relativeTitleView.getText().toString());
button.setTouchInfo(false);
}
else {
dbAccess.removeFromOrder(relativeTitleView.getText().toString());
button.setTouchInfo(true);
}
}
return false;
}
});
我剛剛意識到addToOrder - 因爲是全局性的,所以無法判斷某個按鈕的某個實例是否被觸動。我需要的是每個按鈕實例的addToOrder變量 - 但是,我將得到那個可怕的最終/非最終變量錯誤... – cspam 2012-03-16 19:31:29