Как включить функцию OnClick в адаптере ListView в функции Activity

У меня есть приложение Android с ListView в нем, ListView будет настраиваться отлично, но теперь я хочу, чтобы изображение в ListView было доступно для кликов. Я делаю это, используя 2 класса, класс Activity (parent) и ArrayAdapter для заполнения списка. В ArrayAdapter я реализую OnClickListener для изображения в списке, который я хочу кликать.

Пока все работает.

Но теперь я хочу запустить функцию из класса активности, когда запускается onClick для изображения в списке, но я не знаю, как это сделать. Ниже приведены 2 класса, которые я использую.

Сначала класс активности:

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

И ArrayAdapter, откуда я хочу вызвать функцию из класса Activity:

 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; } } 

Если кто-нибудь знает, как запустить функцию в классе активности из массива или как установить изображение onClickListener в классе активности, я бы сильно усвоил помощь.

Внутри onClick() Сделайте что-то вроде этого:

 ((ParentClass) context).functionToRun(); 

Просто для ясности расширить предоставленные ответы. В BaseAdapter вы можете получить родительский класс, вызвав this.getActivity(); Если вы затем приведёте это значение к действительному классу активности, вы можете затем вызвать функцию в соответствии с ответом @AdilSoomro ниже, чтобы на самом деле вы получили что-то вроде этого

 public class MyAdapter extends BaseAdapter<Long> { public MyAdapter(Activity activity, TreeStateManager<Long> treeStateManager, int numberOfLevels) { super(activity, treeStateManager, numberOfLevels); } @Override public void handleItemClick(final View view, final Object id) { ((MyActivity) this.activity).someFunction(); } } 

Затем просто объявите someFunction в MyActivity, чтобы делать то, что вы хотите

  protected void someFunction(){ // Do something here }