2010-04-19 73 views
4

我正在構建一個android應用程序,它具有列表視圖,並且在列表視圖中包含一個包含onItemClick方法的點擊偵聽器。所以我有這樣的事情:傳入一個java類作爲參數嵌入的對象

public class myList extends ListActivity { 
    @Override 
public void onCreate(Bundle savedInstanceState) { 
     getListView().setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View view, 
     int position, long id) { 
      /* Do something*/ 
     } 
    } 
} 

通常情況下,這工作正常。但是,很多時候我發現自己需要使用外部類作爲上下文來過度執行應用程序。 thusfar,我用:

parent.getContext(); 

要做到這一點,但我想知道,是一個壞主意?我真的不能打電話:

super 

因爲它不是一個真正的子類,只是一個嵌入式的子類。那麼有沒有更好的方法,還是被認爲是閉眼?另外,如果方法正確,如果嵌入方法沒有參數來獲得外部類,我應該怎麼做?

謝謝。

回答

3

如果我正確理解你的問題,你想從匿名內部類中調用外部類,對吧?要做到這一點,請使用以下語法:

myList.this.getContext(); 

從匿名內部類的onItemClick方法中。這是爲內部類訪問包含它的外部類的實例而定義的特殊語法。

+0

工作,謝謝。 – 2010-04-19 03:20:49

2

在匿名內部類中,您可以使用EnclosingClass.this獲得外部類的句柄。有關信息,請參閱here。 長而短的是你可以在你的onItemClick()等中使用myList.this.getContext()。

相關問題