안드로이드 2.3.3프로그래밍 방식으로 버튼 ID 설정
나는 N 개의 행과 N 개의 열이있는 테이블을 가지고 있습니다. 각 행마다 4 개의 버튼을 동적으로 추가해야하고 나중에 클릭 한 버튼을 기반으로 작업을 수행해야합니다. 단추 ID를 button.setID()
의 정수 값으로 설정할 수 있지만 btnXYZ1
및 btnXYZ2
등과 같이 ID를 문자열 값으로 설정할 수 있는지 여부를 알고 싶습니다.
안드로이드 2.3.3프로그래밍 방식으로 버튼 ID 설정
나는 N 개의 행과 N 개의 열이있는 테이블을 가지고 있습니다. 각 행마다 4 개의 버튼을 동적으로 추가해야하고 나중에 클릭 한 버튼을 기반으로 작업을 수행해야합니다. 단추 ID를 button.setID()
의 정수 값으로 설정할 수 있지만 btnXYZ1
및 btnXYZ2
등과 같이 ID를 문자열 값으로 설정할 수 있는지 여부를 알고 싶습니다.
없음 당신이 String
로 설정할 수 없습니다, ID는 그것이 int
값
for (int i=0;i<nob;i++) {
Button btn = new Button(this);
btn.setId(i+1);
btn.setText("Button"+(i+1));
btn.setOnClickListener(btnclick); <<<<<<<set click
btn.setLayoutParams(lprams);
dynamicview.addView(btn);
}
그리고이 추가 단지 리소스 이름 당신이 XML
에서 설정할 경우에도 int
값입니다 어떤 메서드 및 내부 클래스 외부의 listner
OnClickListener btnclick = new OnClickListener() {
@Override
public void onClick(View view) {
switch(view.getId()) {
case 1:
//first button click
break;
//Second button click
case 2:
break;
case 3:
//third button click
break;
case 4:
//fourth button click
break;
.
.
.
default:
break;
}
}
};
XML 파일에서 사용하는 문자열은 R.java이며, 따라서 실제로는 int입니다. setId() 메서드는 int 값만 인수로받습니다. 당신은 상수 파일에 사용자의 ID를 정의 할 수 있습니다, 뭔가 같은 :
button.setId(Ids.ID_ONE);
, ID가도 때를 int 값은 문자열로 설정 할 수 없음이다 : 다음
public class Ids {
public static final int ID_ONE = 1;
}
과로 사용 XML로부터 설정하십시오. int 값의 리소스 이름입니다.
어쨌든 뷰에 대한 참조가 있다면 HashMap과 같이 HashMap에 모두 저장할 수 있습니다.
또 다른 대안은 오타를 피할 수 있도록 해시 맵의 키로 열거 형을 사용하는 것입니다 (예 : HashMap).
xml 파일은 문자열로 설정하지 않습니다. 모든 ID는 R.id로 변환되며, 모든 ID는 정수로 나타납니다. –
그래, 나도 알아, 나는 우리가 같은 programatically 할 수 있는지, 묻고 있었다. –
어쨌든 각 버튼에 대한 참조가있는 경우 모두 HashMap에 넣을 수 있습니다. –