2011-09-28 3 views
3

.xml 파일에 간단한 테이블 레이아웃이 있습니다. 런타임에 컴포넌트를 추가하려고합니다. 내가 행의 하나를 클릭 할 때마다테이블 행/테이블 항목의 클릭 이벤트를 얻는 방법?

public class Home extends Activity{ 

    TextView tv1; int i;TableRow tbrow; 
    String [] names = {"First Name","Last Name", "Title","Company","Phone"}; 
    int [] images = { R.drawable.icon,R.drawable.icon,R.drawable.star2,R.drawable.icon,R.drawable.icon} 


     @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);  
     TableLayout ll=(TableLayout) findViewById(R.id.tableLayout1); 


     TableRow trow=new TableRow(this); 
     ImageView Image1=new ImageView(this); 
     ImageView Image2=new ImageView(this); 
     ImageView Image3=new ImageView(this); 
     ImageView Image4=new ImageView(this); 
     tv1=new TextView(this); 
     trow.setClickable(true); 

     Image1.setImageResource(R.drawable.blank); 
     Image2.setImageResource(R.drawable.star2); 
     Image3.setImageResource(R.drawable.blank); 
     Image4.setImageResource(R.drawable.blank); 

     tv1.setText("Brochures"); 
     trow.addView(Image1); 
     trow.addView(tv1); 
     trow.addView(Image2); 
     trow.addView(Image3); 
     trow.addView(Image4); 
     trow.setId(0); 
     ll.addView(trow); 
     for(i=1;i<5;i++){ 
      tbrow=new TableRow(this); 
      ImageView img1=new ImageView(this); 
      tv1=new TextView(this); 
      CheckBox chk=new CheckBox(this); 
      ImageView img2=new ImageView(this); 
      ImageView img3=new ImageView(this); 
      img1.setImageResource(R.drawable.pdf); 
      img2.setImageResource(R.drawable.blank); 
      img3.setImageResource(R.drawable.blank); 

      tv1.setText(""+names[i]); 
      tbrow.addView(img1); 
      tbrow.addView(tv1); 
      tbrow.addView(chk); 
      tbrow.addView(img2); 
      tbrow.addView(img3); 
      tbrow.setId(i); 
      Log.e("TAG", "ID: "+tbrow.getId()); 
      tv1.setOnClickListener(new OnClickListener() {      
       @Override 
       public void onClick(View arg0) { 
        Toast.makeText(Home.this, ""+tbrow.getId(), 
          Toast.LENGTH_SHORT).show(); 
        Log.e("TAG", " clicked ID: "+tbrow.getId()); 
       } 
      }); 
     ll.addView(tbrow); 
     } 
    } 
} 

이, 마지막 행의 onClick() 이벤트가 트리거 : 다음 내 코드입니다. 텍스트보기 대신 테이블 행에 대해 onClick() 이벤트를 트리거하려고 시도했지만 헛되지 않았습니다.

어떤 행을 클릭했는지 알고 싶습니다. getID(), setID()이 작동하지 않습니다.

도와주세요.

+0

테이블 행 @pallavi에 대해 OnClickListener를 시도 했습니까? – Abhi

+0

tbrow.setOnClickListener (...);는 어떤 행을 클릭하려고 할 때'4 '를 표시합니다. – Pallavi

+0

하지만 첫 번째 행이 고정 행과 같고 다른 행에 값이 포함되기를 원합니다. 목록 첫 번째 행에는 열 이름이 포함되고 다른 행에는 열 데이터가 포함됩니다. 그리드에서는 불가능합니다. 첫 번째 행이 상수입니까? – Pallavi

답변

7

변경 광고

tbrow = 새로운 TableRow (이);

final TableRow tbrow = new TableRow(this); 

및 예상대로 작동합니다.

+0

고마워요 !!! 나는 1 단어가 그렇게 많은 차이를 만들 것이라고 몰랐다! 해결되었습니다! 그냥 전역 변수를 만드는 대신'final'을 써야했습니다 ... 감사합니다 @ernazm – Pallavi

관련 문제