2014-03-28 82 views
4

我想將onClicklistener添加到生成的動態表格中的項目。 我的代碼是動態表格佈局上的OnClickListener

for(int k=0;k<i;k++)   
{ 

    tr[k]=new TableRow(getApplicationContext()); 
    tr[k].layout(0, 0, 0, 0); 
     ids[k] = new TextView(getApplicationContext()); 
     ids[k].setText(loc_id[k]); 
     ids[k].setPadding(30, 15, 30, 15); 
     loc[k] = new TextView(getApplicationContext()); 
     loc[k].setText(loc_name[k]);  
     loc[k].setPadding(30, 15, 30 ,15); 
     tr[k].setPadding(0, 1, 0, 0); 
     tr[k].addView(ids[k]); 
     tr[k].addView(loc[k]); 
     tl.addView(tr[k], new TableLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

} 

請幫忙。

+0

您需要添加'OnClickListner'接口到你的活動,然後添加所有的動態視圖,以'setOnClickListner'終於可以趕上單擊事件中的所有視圖'的onClick(查看圖) '方法。 –

+0

需要兩個textview或只有一個onclick .. ?? –

+1

在點擊該行時,我想獲得id [k]的值..請幫助 – Sukan

回答

6

您需要OnClickListner接口添加到您的活動,然後添加所有的動態視圖,以setOnClickListner終於可以趕上單擊事件裏面的onClick(查看視圖)方法的所有視圖。

試試這個

public class MainScreen extends Activity implements OnClickListener { 

int i = 10; // input no of row 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); // set here your layout xml name 

    //TableLayout tl = new TableLayout(MainScreen.this); 
     TableLayout tl = (TableLayout) findViewById(R.id.table); 
    for (int k = 0; k < i; k++) { 

     TableRow tr = new TableRow(MainScreen.this); 
     tr.layout(0, 0, 0, 0); 
     TextView ids = new TextView(MainScreen.this); 
     ids.setText(loc_id[k]); 
     ids.setPadding(30, 15, 30, 15); 
     TextView loc = new TextView(MainScreen.this); 
     loc.setText(loc_name[k]); 
     loc.setPadding(30, 15, 30, 15); 
     tr.setPadding(0, 1, 0, 0); 
     tr.addView(ids); 
     tr.addView(loc); 
     tr.setId(k); // here you can set unique id to TableRow for 
         // identification 
     tr.setOnClickListener(MainScreen.this); // set TableRow onClickListner 
     tl.addView(tr, new TableLayout.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 

    } 

    //setContentView(tl); 
} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    int clicked_id = v.getId(); // here you get id for clicked TableRow 

    // now you can get value like this 

    String ids = loc_id[clicked_id]; 
    String loc = loc_name[clicked_id]; 

} 
} 
+0

感謝您的代碼,但對不起,我忘記提及我在新的CountDownTimer函數內使用thisfinish方法,所以上面的代碼不起作用:(顯示錯誤 – Sukan

+0

我認爲這是'Context'問題,所以請用'ActivityNAme.this'替換'this'。 –

+0

檢查更新後的答案.. –