2011-09-27 7 views
0

다른 객체에서 가져온 배열 목록의 크기에 따라 동적으로 버튼을 만듭니다. arraylist의 각 항목에 대해 나는 각각 다른 행동으로 세 개의 버튼을 만들어야합니다.다른 동작이있는 Android 다중 버튼

이렇게 나는 단추의 arraylist의 크기의 3 시간을 창조 할 필요가있다. 만약 내가 단 하나의 버튼을 가지고 있다면 onClick() -method는 버튼의 id를 취할 수 있지만 여기에는 각 항목에 3 개의 버튼이 있으며 3 개의 버튼에 3 가지 다른 액션을 써야합니다.

어떻게이 작업을 수행 할 수 있습니까?

+1

는 나는 그가 혼자 ID를 설정하는 경우 세 개의 버튼 각각에게 태그를 제공하는 메소드의 SetTag()를 사용할 수 있으며, 다음, – Houcine

답변

0

버튼의 목록 선언 :

private List<Button> buttons = new ArrayList<Button>(); 

그런 다음이 목록에 각 버튼을 추가

buttons.add(0, (Button) findViewById(id in ur layout)); 

을, 안쪽 루프 클릭 리스너를 제공 :

Button element = buttons.get(i); 
element.setOnClickListener(dc); 

직류이 어디를 ur 내부 클래스의 객체 이름으로 OnClickListener를 구현합니다.

당신이 줄 수있는 각각의 버튼에 액세스하려면 :

Button myBtn; 

@Override 
public void onClick(View v) { 

    myBtn = (Button) v; 
     // do operations related to the button 
} 
1

내가 item.it 같은 방법으로

String[] arrayName={"abc","def","ghi"}; 
for(int i=0;i<arrayName.length;i++)  
    { 
     TextView tv=new TextView(context); 
     tv.setPadding(20, 5, 40, 5);     
     tv.setText(arrayName[i]); 
     tv.setTextSize(1, 12); 

     tv.setLayoutParams(new Gallery.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); 
     tv.setTextColor(Color.parseColor("#2554C7")); 
     tv.setClickable(true); 
     tv.setId(i);    

     layout.addView(tv);   
    } 

같은 -이었다 내 배열의 각에 대한 텍스트 뷰를 필요로 할 때 내가했던 비슷한 일이 , 비슷한 방법으로 버튼을 추가 할 수 있습니다. 각각의 클릭 이벤트에서 별도로 액션을 코딩 할 수 있습니다. (시도하지 않았습니다.) 각 반복에서 각 배열 항목에 대해 3 개의 버튼을 갖게됩니다.

편집 - 1 : 그럼 당신은 등등 ... mButton1.setOnClickListener 같은 버튼의 각 청취자를 클릭하여 설정할 수 있습니다

mButton1.setId(Integer.parseInt(i+"1")); 
mButton2.setId(Integer.parseInt(i+"2")); 
mButton3.setId(Integer.parseInt(i+"3")); 

:

당신은 같은 ID를 구별 할 수 있습니다.

+0

을 클릭되는 버튼을 알고 자신의 행동을 정의 할 수 있습니다 생각 세 개의 버튼은 같은 id를 가지므로 어떤 버튼이 액션을 실행할 지 지정할 수 없기 때문에이 경우 setTag() 메서드를 사용할 수 있습니다. onClick() 메서드에서 태그를 가져 와서 버튼을 구분할 수 있습니다. getTag(); – Houcine

+0

이제는 좋은 것입니다. 이해해주세요. setTag()와 같은 해결책입니다 : +1 – Houcine

0

는 버튼 액션 이벤트에 대한 공통 리스너 클래스를 만들고이 setOnClickListener() 방법 이제 버튼의 고유 ID를 설정

으로 사용 설정합니다.

class MyAction implements onClickListener{ 
    public void onClick(View view){ 
      // get the id from this view and set into the if...else or in switch 
      int id = view.getId(); 
      switch(id){ 
       case 1: 
       case 2: 
       /// and so on... 
      } 
      //// do operation here ... 
    } 
} 

세트 이런 식으로 같은 버튼이 청취자 :

지금과 같은 클래스 모양을 가정합니다.

Button b1 = new Button(context); 
b1.setId(1); 
b1.setOnClickListenr(new MyAction()); 
Button b2 = new Button(context); 
b2.setId(2); 
b2.setOnClickListener(new MyAction());