2012-05-07 41 views
2

所以我一直在Android開發相當長的一段時間,我本身就是一個.Net開發者。我面臨的問題是我的代碼看起來很糟糕,而且我真的不喜歡Java \ Android無法確定的方式,從而使代碼中出現點擊事件。在下面的這個例子中,我有一個帶有點擊事件的列表視圖。有沒有更簡單的方法來點擊Android中的監聽器?

list_view.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
      // TODO Auto-generated method stub 

     } 
    }); 

在.Net我會在我的Initialize Components方法中設置我的單擊事件,然後在我的主代碼頁中實現它。我如何告訴android在我的代碼中使用下面的click事件方法,而不是在那裏引用它。也許這樣?

list_view.setOnItemClickListener(onItemClick()); 

後來在我的代碼頁。

public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     // TODO Auto-generated method stub 

    } 
}); 

總而言之,我只是尋找一種更簡潔的方法將我的事件連接到我的控件,以便更好地閱讀代碼。當最初是一個.Net開發人員時,轉向Java和Android是一個奮鬥。

謝謝!

編輯

感謝您對下面我貼我在這裏工作了答案。

list_view.setOnItemClickListener(list_view_onItemClickListener); 


//below in my code 
private OnItemClickListener list_view_onItemClickListener = new OnItemClickListener(){ 
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { 
     // TODO Auto-generated method stub 

    } 

}; 
+0

這在Java中稱爲[匿名類](http://littletutorials.com/2008/03/09/anonymous-inner-classes/)。隨意使用經典的內部類模式來編寫和引用您的類實現。 – yorkw

回答

3

你可以試試this

+0

你好,我將作爲編輯發佈我做了什麼! – meanbunny

1

你可能喜歡或沒有,但我找到最適合我的,例如這是什麼方法您layout.xml

<Button1 android:id="@+id/btn1" android:onClick="btnHandle"> 

</Button1> 

<Button2 android:id="@+id/btn2 android:onClick="btnHandle"> 

</Button2> 

,並在您activity.Java

public void btnHandle(View v) 
{ 
    if(v.getId()==R.id.btn1){ 


}else if(v.getId()==R.id.btn2){ 

} 

通過這種方式你沒有實現任何界面,即使您將Button視圖更改爲ImageView,您仍然不必在代碼中執行任何操作。但在setOnClickListener的情況下,您必須將您的instance variable類型從Button更改爲ImageView。 }

+0

我曾嘗試過這種方法,但從未真正滿意過它。主要原因我認爲我只能在每個活動中實現1個按鈕點擊,但根據您的示例,我絕對可以採用更清晰的解決方案。 – meanbunny

相關問題