버튼을 동적으로 만들면 하나를 선택하고 다른 버튼을 선택 해제 할 수 있습니까?
-
20-09-2019 - |
문제
버튼을 동적으로 만들고 있습니다 ...
for(int i=0; i<colSize;i++){
final Button btn = new Button(this);
btn.setText(SectionName[i]);
btn.setTextSize(10);
btn.setPadding(8, 3,8, 3);
btn.setTextColor(Color.WHITE);
btn.setTypeface(Typeface.SERIF, Typeface.BOLD);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//***Every time that I click my button is selected !:)
btn.setSelected(true);
}
});
}
그러나 선택한 다른 버튼을 어떻게 선택할 수 있는지, 나는 단지 하나의 버튼을 선택하고 싶다! :)
해결책
클릭 된 버튼의 ID를 저장하도록 변수를 선언합니다 ::
private int EnabledButton;
생성 될 때 모든 버튼에 ID를 설정하십시오.
btn.setId(i);
또는 태그 ::
btn.setTag(i);
그런 다음 청취자에서 "enabledButton"을 가져 와서 다른 버튼을 선택 해제하기 위해 함수를 호출합니다.
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
EnabledButton=btn.getId();
DeselectButtons();
btn.setSelected(true);
}
});
다른 버튼을 선택 해제하는 함수 ::
public void DeselectButtons() {
for(int i=0; i<NumberofButtons;i++){
if (EnabledButton!= i)
this.findViewById(i).setSelected(false);
}
}
다른 팁
- 잔인한 방법 (버튼이 적은 경우 작동) - 버튼 참조를 저장하고 필요한 경우 버튼을 통해 고리하고 선택 사항이 필요하지 않으면 개인 메소드를 만듭니다.
- 버튼 클래스를 연장하고 버튼 중 하나를 클릭 할 때 생성되는 사용자 정의 이벤트를 듣게합니다.
- 를보세요 무선 그룹 구현
- #1의 변형. 버튼에 대한 별도의 리스너를 만드는 대신 하나만 생성하고 모든 버튼에 대해 재사용합니다. OnClickListener에서 해당 리스너를 확장하고 목록 필드를 추가하십시오. 청취자에게 버튼 추가 버튼을 해당 목록에 할당 할 때마다. 이제 언제
onClick
목록을 통해 단순히 루프를 트리거하고 "기타"버튼을 비활성화합니다.
제휴하지 않습니다 StackOverflow