나는 여러 개의 버튼 인스턴스가 만들어지고 각 인스턴스마다 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