2011-02-18 78 views
0

我有一個在XML中定義的表格和一個將視圖定義爲另一個XML的行。假設我需要用5行填充表格。運行下面的代碼:android-無法將偵聽器添加到虛擬表格中 -

final ViewGroup table = (TableLayout)findViewById(R.id.table); 

    View row = null; 

    TextView title = null; 

    for(int i=0; i<5; i++) 

    { 

     row = LayoutInflater.from(this).inflate(R.layout.row, null, false); 

     title = (TextView)row.findViewById(R.id.text_title); 

     title.setText("val"); 
     ImageView x= (ImageView)itemView.findViewById(R.id.remove); 
     x.setOnClickListener(delimg); 

     table.addView(row); 

    } 
    private OnClickListener delimg = new OnClickListener() { 


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

     TextView tv = (TextView) findViewById(R.id.pname); 
        tv.setText("Deleted item!"); 

    } 
}; 

它工作正常,但是當我嘗試onclicklistener添加到圖像,它改變了只在第一行,而不是corressponding行。請幫忙。

+0

請編輯您的問題或發表評論,而不是發佈不是答案的答案。 – 2011-02-19 15:55:51

回答

0

itemView從哪裏來?假設你要設置的監聽是你的行內ImageView的,你可以嘗試改變從:

ImageView x= (ImageView)itemView.findViewById(R.id.remove); 

ImageView x= (ImageView) row.findViewById(R.id.remove); 

是否與該改變工作?


編輯:我想我對這裏的問題做了一個錯誤的假設。我以爲你有一個叫做pname的TextView,以外的表。如果您按下第0行的圖像,則文本會更新,但如果按下了第1-4行,則不會發生任何事情。我沒有看到會導致什麼。

我可能誤讀了「它只改變了第一行」。你是否在的每行中有一個pname,並且文本在第一行上更改,而不管你點擊哪一行?如果是這樣,那麼你就需要改變你的onClick()到:

TextView tv = (TextView) arg0.findViewById(R.id.pname); 
     tv.setText("Deleted item!"); 

否則,它找到的第一個項目,在整個的活動,ID。

+0

編輯答案。 – erichamion 2011-02-19 01:46:59

相關問題