2013-03-27 1 views
4

문자열 배열에서 테이블을 동적으로 채 웁니다. 테이블의 각 행에도 한 열의 값을 늘리거나 줄이기위한 더하기 및 빼기 단추가 있습니다. 이 버튼은 아래 코드와 같이 동적으로 생성됩니다. 클릭하면 정확한 버튼을 어떻게 감지 할 수 있습니까? 즉; 두 번째 행의 '+'버튼을 클릭하면 추가 처리를 위해 클릭 한 버튼의 ID를 어떻게 얻을 수 있습니까?동적으로 생성 된 테이블에서 클릭 한 버튼을 식별하는 방법

plusButton= new Button(this); 
minusButton= new Button(this); 
createView(tr, tv1, names[i]); 
createView(tr, tv2, (String)(names[i+1])); 
minusButton.setId(i); 
minusButton.setText("-"); 
minusButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); 
plusButton.setId(i); 
plusButton.setText("+"); 
plusButton.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));` 
+0

이벤트 핸들러를 연결하면됩니다. – IamStalker

답변

2

각 버튼마다 onClickListener 수신기를 설정할 수 있습니다. onClick() 메서드의 view.getId() 메서드에서 단추의 ID를 사용하여 단추를 클릭하십시오.

당신은 (각 버튼에 대한 설정하는 ID가 행에 해당한다고 가정) 여기처럼 각 버튼에 대해 별도의 리스너를 추가 할 수

minusButton.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v){ 
      // Do some operation for minus after getting v.getId() to get the current row 
     } 
    } 
); 

편집 :

내가 코드를 가정하고 이런거야. 이탈이 있으면 나를 바로 잡으십시오.

Button minusButton = null; 
for(int i = 0; i < rowCount; i++) 
{ 
    minusButton = new Button(this); 
    minusButton.setId(i); 
    // set other stuff and add to layout 
    minusButton.setOnClickListener(this); 
} 

은 클래스가 인터페이스 View.OnClickListener를 구현하고 onClick() 메소드를 구현하자.

public void onClick(View v){ 
    // the text could tell you if its a plus button or minus button 
    // Button btn = (Button) v; 
    // if(btn){ btn.getText();} 
    // getId() should tell you the row number 
    // v.getId() 
} 
+0

보내 주신 의견에 감사드립니다. 하지만 내가 얻는 이드는 마지막으로 만들어진 버튼 일뿐입니다. 즉. 두 개의 행이 있으면 2 개의 빼기 + 더하기 버튼이 있습니다. onClickListener는 두 번째 행에서 클릭 만 잡습니다. 내가 중단 점을 두 번째 행에 대한 클릭 만 잡히고있다 –

+2

고마워. 그것은 작동했습니다 : D –

+0

당신은 오신 것을 환영합니다. – midhunhk

0

당신은 태그와 함께 할 수있는 : minusButton.setTag("-")plusButton.setTag("+").

clickListener에서 view.getTag()으로 버튼에서 가져 오기만하면됩니다.

그런 다음 문자열 태그를 비교하는 동작 사이를 전환하십시오.

편집 :
ID는 고유해야합니다. setId()가 작동하지 않으면 setTag() 메서드가 도움이 될 수 있습니다.

+0

문제는 플러스 또는 마이너스 식별과 관련이 없습니다. 다시 한번 읽어보십시오. 클릭 한 버튼의 ID를 얻을 수 없습니다. onClickListener는 동적으로 채워진 테이블에서 만들어진 마지막 버튼 만 듣고 있습니다. –

+1

죄송합니다. 질문을 잘못 읽었습니다. 어쨌든 setId()가 작동하지 않는다면 setTag() 메서드가 도움이 될 수 있습니다. 또한 ID는 고유해야합니다. – jila

+0

예. 그냥 깨달았습니다. 고맙습니다. –

관련 문제