2011-09-28 109 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

你試過OnClickListener表格行@ pallavi – Abhi

+0

'tbrow.setOnClickListener(...);'toasts' 4'當我嘗試點擊任何行。 – Pallavi

+0

但我想第一行像固定行,其他行將包含值。 列表第1行包含列名稱,其他行包含列數據。這在Grid中是不可能的? 第一行爲常量? – Pallavi

回答

7

改變線

tbrow =新的TableRow(本);

final TableRow tbrow = new TableRow(this); 

和你希望它會工作。

+0

非常感謝!我不知道1個單詞會有多大的區別!它解決了!只需要編寫'final'而不是使其成爲全局變量......謝謝@ernazm – Pallavi