Search code examples
androidimagelistviewcustomizationclickable

Making a custom android ListView adapter Clickable


I've been trying to create a clickable listview that takes in a string array and a few images and presents them in a textview style. So far I have managed to create a listview with each of the strings and images, however I am unsure how to use the onClick method so as to make the textviews clickable to start new activities etc.

Here is my code so far (Excluding XML):

public class MySimpleArrayAdapter extends ArrayAdapter<String> {
    private final Context context;
    private final String[] values;

    public MySimpleArrayAdapter(Context context, String[] values) {
    super(context, R.layout.activity_test2, values);
    this.context = context;
    this.values = values;
}

    /* Print a toast when a list item is clicked, don't know what to do */
 public void onClick() {
    switch (list item) {
    case 0:
        Toast.makeText(this.context, "Pressed!", Toast.LENGTH_LONG).show()
        break;
    }
            case 1:
                    etc....

} 

@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.activity_test2, parent, false);
    TextView textView = (TextView) rowView.findViewById(R.id.label);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
    textView.setText(values[position]);

    String s = values[position];
    if (s.startsWith("Report a Road Delay")) {
        imageView.setImageResource(R.drawable.ic_menu_compose);
    } else if (s.startsWith("View Reported Delays")) {
        imageView.setImageResource(R.drawable.ic_menu_view);
    } else if (s.startsWith("Search a Road for Delays")) {
        imageView.setImageResource(R.drawable.ic_menu_search);
    } else if (s.startsWith("Update a Delay Report")) {
        imageView.setImageResource(R.drawable.ic_menu_edit);
    } else if (s.startsWith("Validate a Delay Report")) {
        imageView.setImageResource(R.drawable.ic_menu_mark);

    }
    return rowView;
  }
}

 public class MainActivity extends ListActivity {
public void onCreate(Bundle SavedInstanceState) {
    super.onCreate(SavedInstanceState);
    String[] values = new String[] { "Report a Road Delay",
            "View Reported Delays", "Search a Road for Delays",
            "Update a Delay Report", "Validate a Delay Report" };
    MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(this, values);
    setListAdapter(adapter);

}

 }

This is how it looks so far:

enter image description here

All I basically don't understand is the onClick method; what parameters it takes it, and how to determine which item was clicked. Any help would be appreciated.


Solution

  • Try this:

    ListView list1 = getListView();
    
    list1.setOnItemClickListener(
            new OnItemClickListener()
            {
                @Override
                public void onItemClick(AdapterView<?> arg0, View view,
                        int position, long id) {
    
                             //Take action here.
                     }
                }
    );