私は複数のボタンインスタンスが作成され、各インスタンスにはTouchListenerがあるループがあります。しかし、私は異なるボタンに触れたときにどのように管理するかを考え出すのに問題があります。私が達成しようとしているのは、各ボタンがテキストビューを表し、ボタンに触れるときにボタンのそのインスタンスに関連付けられたその特定のテキストビューをarraylistに追加したいということです。しかし、同じボタンをもう一度タッチすると、リストから削除して、もう一度触れるともう一度追加したいと思います。ああ、addToOrderは現在グローバルであり、trueに初期化されています。onTouchメソッド - ボタンのどのインスタンスがクリックまたは押されたかを把握する
思考?
EDIT ****私のコメントごとにボタンは、ボタンの各インスタンスに簡単に追いつくことができるように、私が書いた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