2013-02-11 2 views
3

안드로이드 2.3.3프로그래밍 방식으로 버튼 ID 설정

나는 N 개의 행과 N 개의 열이있는 테이블을 가지고 있습니다. 각 행마다 4 개의 버튼을 동적으로 추가해야하고 나중에 클릭 한 버튼을 기반으로 작업을 수행해야합니다. 단추 ID를 button.setID()의 정수 값으로 설정할 수 있지만 btnXYZ1btnXYZ2 등과 같이 ID를 문자열 값으로 설정할 수 있는지 여부를 알고 싶습니다.

+0

xml 파일은 문자열로 설정하지 않습니다. 모든 ID는 R.id로 변환되며, 모든 ID는 정수로 나타납니다. –

+0

그래, 나도 알아, 나는 우리가 같은 programatically 할 수 있는지, 묻고 있었다. –

+0

어쨌든 각 버튼에 대한 참조가있는 경우 모두 HashMap 에 넣을 수 있습니다. –

답변

9

태그를 사용할 수 있습니다 그 목적을 위해. 예를 들어

btn.setTag("btXYZ"); 
+0

좋아요, 그래서, 당신은 정수로 ID를 설정하고 문자열로 태그를 설정하고 태그를 사용하여 나중 단계에서 어떤 버튼을 클릭했는지 찾으십니까? –

+0

네가 그렇게 할 수있다. – pvn

+0

@VamsiChalla ID를 사용하여 뷰를 가져와야하는 모든 함수는 getId() 대신 ViewViewByTag(), ViewViewById(), View.getTag(), ofcourse View.setTag – pvn

0

없음 당신이 String로 설정할 수 없습니다, ID는 그것이 int

1
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; 
     } 
    } 
}; 
1

XML 파일에서 사용하는 문자열은 R.java이며, 따라서 실제로는 int입니다. setId() 메서드는 int 값만 인수로받습니다. 당신은 상수 파일에 사용자의 ID를 정의 할 수 있습니다, 뭔가 같은 :

button.setId(Ids.ID_ONE); 
0

, ID가도 때를 int 값은 문자열로 설정 할 수 없음이다 : 다음

public class Ids { 
    public static final int ID_ONE = 1; 
} 

과로 사용 XML로부터 설정하십시오. int 값의 리소스 이름입니다.

0

어쨌든 뷰에 대한 참조가 있다면 HashMap과 같이 HashMap에 모두 저장할 수 있습니다.

또 다른 대안은 오타를 피할 수 있도록 해시 맵의 키로 열거 형을 사용하는 것입니다 (예 : HashMap).

관련 문제