4

我正在构建一个 android 应用程序,它有一个列表视图,在列表视图中,一个点击监听器,包含一个 onItemClick 方法。所以我有这样的事情:

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*/
        }
    }
}

通常,这可以正常工作。然而,很多时候我发现自己需要使用外部类作为上下文来执行应用程序。到目前为止,我使用过:

parent.getContext();

这样做,但我想知道,这是一个坏主意吗?我真的不能打电话:

super

因为它不是真正的子类,只是一个嵌入式子类。那么有没有更好的方法,或者这被认为是可靠的?另外,如果是正确的方法,如果嵌入的方法没有获取外部类的参数怎么办?

谢谢你。

4

2 回答 2

3

如果我正确理解您的问题,您想从匿名内部类中调用外部类,对吗?为此,请使用以下语法:

myList.this.getContext();

onItemClick匿名内部类的方法中。这是为内部类定义的特殊语法,用于访问包含它的外部类的实例。

于 2010-04-19T03:13:18.847 回答
2

在匿名内部类中,您可以使用 EnclosureClass.this 获取外部类的句柄。有关信息,请参见此处。总而言之,您可以在 onItemClick() 等中使用 myList.this.getContext() 。

于 2010-04-19T03:11:08.870 回答