2011-01-22 42 views
0
public class ActivityForShow extends Activity 

{ 
    //have a ListView layout 
    ListView.setAdapter(SingleRowAdapter); 
} 

public class SingleRowAdapter extends ArrayAdapter 
{ 
    //every row has a CheckBox ,a TextView and a Button 
} 

現在我想處理CheckBox和Button事件,做一些後臺工作並在對話框中顯示結果。
但是如何在ActivityForShow中獲取Checkbox和Button的Refences?
findViewById()將導致異常。定製ListView上的事件句柄

回答

0

我不認爲你想在ActivityForShow類中做到這一點。相反,將所有事件處理程序註冊到SingleRowAdapter#getItem(int)方法內部(您將不得不重寫該方法)。在該方法中,您爲給定行創建視圖,因此您知道行(位置)是什麼,您可以註冊CheckBox,Button等事件處理程序。

+0

但在SingleRowAdapter類中,我無法創建對話框,對嗎? – outcast

0

它顯而易見,它會給finviewbyid方法帶來錯誤bcoz用於當XML參考ele.you可以使用這個鏈接研究:像你要處理的onCheckedChanged事件或ActivityForShowonClick事件http://developer.android.com/reference/android/widget/ArrayAdapter.html


+0

我知道如何在SingleRowAdapter類中找到ViewById,我想知道如何在AcitvityForShow類中獲取引用。 – outcast

0

聽起來。

如果是這樣,有ActivityForShow創建OnCheckedChangeListener實例和OnClickListener實例(例如當地的匿名內部類),並有ActivityForShow給他們SingleRowAdapter(例如作爲構造PARAMS)附加到複選框,按鈕控件作爲他們的回調。

或者,定義您自己的自定義處理程序接口(s),以便在單擊該按鈕或選中該複選框時進行調用。讓ActivityForShow用處理事件的代碼實例化自定義接口的實例。有ActivityForShow給他們SingleRowAdapter。最後,讓SingleRowAdapter創建事件處理程序以附加到複選框和按鈕 - 這些事件處理程序只需調用您自己的自定義處理程序。