views:

69

answers:

2

I'm building an android application, which has a list view, and in the list view, a click listener, containing an onItemClick method. So I have something like this:

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

Normally, this works fine. However, many times I find myself needing too preform an application using the outer class as a context. thusfar, I've used:

parent.getContext();

to do this, but I would like to know, is that a bad idea? I can't really call:

super

because it's not really a subclass, just an embedded one. So is there any better way, or is that considered cosure? Also, if it is the right way, what should I do if the embedded method doesn't have a parameter to get the outside class?

Thank you.

+2  A: 

Within an anonymous inner class you can get the handle of the outer class with EnclosingClass.this. For info see here. Long and short of it is you can use myList.this.getContext() in your onItemClick() ect.

jqpubliq
+2  A: 

If I'm understanding your question correctly, you want to call the outer class from within the anonymous inner class, right? To do so, use the following syntax:

myList.this.getContext();

from within the onItemClick method of the anonymous inner class. This is the special syntax defined for an inner class to access the instance of the outer class that contains it.

laz
That worked, thank you.
Leif Andersen