Adding an onclicklistener to listview (android)

I've managed to implement a great listview that I found here but I can't seem to add an onclicklistener I just want to be able to do an action when I click on the row, with the data that the row contains of course any ideas? thanks

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.liste); this.requestWindowFeature(Window.FEATURE_NO_TITLE); // Setup the list view final ListView prestListView = (ListView) findViewById(R.id.list); final prestationAdapterEco prestationAdapterEco = new prestationAdapterEco(this, R.layout.prestation); prestListView.setAdapter(prestationAdapterEco); // Populate the list, through the adapter for(final prestationEco entry : getPrestations()) { prestationAdapterEco.add(entry); } prestListView.setClickable(true); prestListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { Object o = prestListView.getItemAtPosition(position); String str=(String)o;//As you are using Default String Adapter Toast.makeText(getApplicationContext(),str,Toast.LENGTH_SHORT).show(); } }); } 
5

6 Answers

listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Object o = prestListView.getItemAtPosition(position); prestationEco str = (prestationEco)o; //As you are using Default String Adapter Toast.makeText(getBaseContext(),str.getTitle(),Toast.LENGTH_SHORT).show(); } }); 
3

If your Activity extends ListActivity, you can simply override the OnListItemClick() method like so:

/** {@inheritDoc} */ @Override protected void onListItemClick(ListView l, View v, int pos, long id) { super.onListItemClick(l, v, pos, id); // TODO : Logic } 
2

The prestListView.getItemAtPosition(position); returns the UI widget: Text, Icon, ...

Try this instead:

Object o = prestationAdapterEco.getItemAtPosition(position); 

or

Object o = arg0.getItemAtPosition(position); 

Get the object from the adapter. Not from the list-view.

2. Object o is a prestationEco object. Not a String.

list.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) { // TODO Auto-generated method stub } @Override public void onNothingSelected(AdapterView<?> arg0) { // TODO Auto-generated method stub } }); 

You are doing

Object o = prestListView.getItemAtPosition(position); String str=(String)o;//As you are using Default String Adapter 

The o that you get back is not a String, but a prestationEco so you get a CCE when doing the (String)o

Try this:

 list.setOnItemSelectedListener(new OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) } @Override public void onNothingSelected(AdapterView<?> arg0) { } }); 
1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like