Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OnItemClickListener using ArrayAdapter for ListView

I want to have an OnItemClickListener for a ListView I create using an ArrayAdapter

This is the code I use to create it:

List<Comment> values = datasource.some_search("Wednesday","11");         ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this,                 android.R.layout.simple_list_item_1, values);         setListAdapter(adapter); 

How do I implement onItemClickListener?

Thanks!

EDIT: I am using in my ArrayAdapter and ListView a string of objects.

EDIT 2: More code:

public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_main);            datasource = new CommentsDataSource(this);         datasource.open();         //check if database is populated if NOT, populate with txtToDb();          if (!datasource.isPopulated()) {             // Database is not populated so copy it from assets here             try {                 txtToDb();                 Log.i("Database", "Was not Populated");             } catch (IOException e) {                 // TODO Auto-generated catch block                 e.printStackTrace();                 Log.i("Database", "Was not populated: txtToDb(); failed");              }          } else {             Log.i("Database", "Populated");         }          //wat to show on screen:         List<Comment> values = datasource.search("Wednesday","11");           // Use the SimpleCursorAdapter to show the         // elements in a ListView         ArrayAdapter<Comment> adapter = new ArrayAdapter<Comment>(this,                 android.R.layout.simple_list_item_1, values);         setListAdapter(adapter);      } 

EDIT 3: XML:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="match_parent"     android:layout_height="match_parent"     android:orientation="vertical" >      <LinearLayout         android:id="@+id/group"         android:layout_width="wrap_content"         android:layout_height="wrap_content" >          <Button             android:id="@+id/add"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="Add New"              android:onClick="onClick"/>          <Button             android:id="@+id/delete"             android:layout_width="wrap_content"             android:layout_height="wrap_content"             android:text="Delete First"              android:onClick="onClick"/>      </LinearLayout>      <ListView         android:id="@android:id/list"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="@string/hello" />  </LinearLayout>  
like image 487
Ahmed Zafar Avatar asked Aug 23 '13 14:08

Ahmed Zafar


People also ask

How do I use ArrayAdapter?

Go to app > res > layout > right-click > New > Layout Resource File and create a new layout file and name this file as item_view. xml and make the root element as a LinearLayout. This will contain a TextView that is used to display the array objects as output.

What is the use of ListView explain list view with example?

Android ListView is a ViewGroup that is used to display the list of items in multiple rows and contains an adapter that automatically inserts the items into the list. The main purpose of the adapter is to fetch data from an array or database and insert each item that placed into the list for the desired result.


1 Answers

Use OnItemClickListener

   ListView lv = getListView();    lv.setOnItemClickListener(new OnItemClickListener()    {       @Override       public void onItemClick(AdapterView<?> adapter, View v, int position,             long arg3)        {             String value = (String)adapter.getItemAtPosition(position);              // assuming string and if you want to get the value on click of list item             // do what you intend to do on click of listview row       }    }); 

When you click on a row a listener is fired. So you setOnClickListener on the listview and use the annonymous inner class OnItemClickListener.

You also override onItemClick. The first param is a adapter. Second param is the view. third param is the position ( index of listview items).

Using the position you get the item .

Edit : From your comments i assume you need to set the adapter o listview

So assuming your activity extends ListActivtiy

     setListAdapter(adapter);  

Or if your activity class extends Activity

     ListView lv = (ListView) findViewById(R.id.listview1);      //initialize adapter       lv.setAdapter(adapter);  
like image 113
Raghunandan Avatar answered Sep 21 '22 03:09

Raghunandan