So lassen Sie OnClick im ListView-Adapter die Activity-Funktion aufrufen

Ich habe eine Android-Anwendung mit einer ListView. Die ListView wird ordnungsgemäß eingerichtet. Jetzt möchte ich, dass ein Bild in der ListView angeklickt werden kann. Dazu benutze ich 2 Klassen, die Activity-Klasse (übergeordnet) und einen ArrayAdapter, um die Liste zu füllen. Im ArrayAdapter implementiere ich einen OnClickListener für das Bild in der Liste, auf das geklickt werden soll.

Soweit funktioniert alles.

Aber jetzt möchte ich eine Funktion aus der Aktivitätsklasse ausführen, wenn der onClick für das Bild in der Liste ausgeführt wird, aber ich weiß nicht wie. Unten sind die 2 Klassen, die ich benutze.

Zuerst die Aktivitätsklasse:

<code>public class parent_class extends Activity implements OnClickListener, OnItemClickListener
{
    child_class_list myList;
    ListView myListView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // setup the Homelist data
        myList     = new child_class_list (this, Group_Names, Group_Dates);
        myListView = (ListView) findViewById(R.id.list);

        // set the HomeList
        myListView.setAdapter( myList );
        myListView.setOnItemClickListener(this);
    }

    void function_to_run()
    {
        // I want to run this function from the LiscView Onclick
    }

    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) 
    {
        // do something
    }
}
</code>

Und der ArrayAdapter, von dem aus ich eine Funktion aus der Activity-Klasse aufrufen möchte:

<code>public class child_class_list extends ArrayAdapter<String>
{
    // private
    private final Context context;
    private String[]        mName;
    private String[]        mDate;

    public child_class_list (Context context, String[] Name, String[] Date) 
    {
        super(context, R.layout.l_home, GroupName);
        this.context        = context;
        this.mName      = Name;
        this.mDate  = Date;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) 
    {
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.l_home, parent, false);

        ImageView selectable_image = (ImageView) rowView.findViewById(R.id.l_selectable_image);
        selectable_image.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v) 
            {
                // I want to run the function_to_run() function from the parant class here
            }
        }
        );

        // get the textID's
        TextView tvName = (TextView) rowView.findViewById(R.id.l_name);
        TextView tvDate = (TextView) rowView.findViewById(R.id.l_date);

        // set the text
        tvName.setText      (mName[position]);
        tvDate.setText  (mDate[position]);

        return rowView;
    }
}
</code>

Wenn jemand weiß, wie man die Funktion in der Aktivitätsklasse vom Arrayadapter aus ausführt oder wie man das Bild auf ClickListener in der Aktivitätsklasse einstellt, würde ich die Hilfe sehr empfehlen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage