Home » Android » Android – how to add an item click method to an ArrayAdapter

Android – how to add an item click method to an ArrayAdapter

Posted by: admin June 15, 2020 Leave a comment


I have a simple ArrayAdapter. I want to set up a listener for every row click of my list such that a new Activity opens. How would I do that? My ArrayAdapter code –

public class CountryListAdapter extends ArrayAdapter<String> {
private final Activity context;
private final ArrayList<String> names;

public CountryListAdapter(Activity context, ArrayList<String> names) {
    super(context, R.layout.rowlayout, names);
    this.context = context;
    this.names = names;

public View getView(int position, View convertView, ViewGroup parent) {
    LayoutInflater inflater = context.getLayoutInflater();
    View rowView = inflater.inflate(R.layout.rowlayout, null, true);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    return rowView;
How to&Answers:

Assuming you are using a ListActivity implementing OnItemClickListener
you could use this code:

ArrayAdapter<Object> ad = new ArrayAdapter<Object>(this,
                android.R.layout.simple_list_item_checked, items);
        ListView list = getListView();
        //list.setItemChecked(0, true);

Otherwise, if you don’t extend ListActivity, have a listview in your layout and replace ListView list = getListView() with something like ListView list = findViewById(R.id.listView). Replace list.setOnItemClickListener(this) with

list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {



Simply implement AdapterView.OnItemClickListener.

public void onItemClick(AdapterView<?> adapterView, View view, int pos, long l) {
    Intent i = new Intent(this, ProductActivity.class);
    i.putExtra("item_id", manager.getItemIdAtIndex(pos));

Then just set the class with that method as the onItemClickListener in your adaptor.


Once you have set your adapter using:


Then you can setup a click listener for the listview:

mListView.setOnParentClickListener(new  OnClickListener() {         
    public void onClick(View view,) {
            ///do what you want the click to do