user1114720
user1114720

Reputation: 71

Android: get listview onClick to new intent

i hava got the code below. i want to start an activity when i click on a single item on the list. however when i do nothing happens. I alsow want every item to refer to the same intent calld "com.whiskey.app.view" and send a id variable that was given by the sql query. I browsed trough the code several times but i cant seem t get it to work.

  public class MainScreen extends Activity implements OnItemClickListener{

  public ListView whiskeylist;
  public String[] DataArryWhiskey; 

  ....

   @Override
      protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Start db view of whiskey

    DBConfig whiskeyrows = new DBConfig(this);


    whiskeyrows.open();
        DataArryWhiskey = whiskeyrows.getDataInArray();
    whiskeyrows.close(); 


    whiskeylist = (ListView)findViewById(R.id.listofWhiskey);
    whiskeylist.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1 , DataArryWhiskey));


    // End db view of whiskey

}// end onCreate


// catch itemclick event from the main list.
public void onItemClick(AdapterView av, View v, int position, long l) 
{
    // TODO Auto-generated method stub


    String[] listitem_data = DataArryWhiskey[position].split(","); // break passed sting into a array comma seperated

    Bundle passingitems = new Bundle();
    passingitems.putString("whiskey_id", listitem_data[0]);

    Intent currentintent = new Intent("com.wiskey.app.view");
    currentintent.putExtras(passingitems);

    startActivity(currentintent);

}

Upvotes: 1

Views: 1924

Answers (4)

marcinj
marcinj

Reputation: 49976

You have not added listener for click actions, try adding:

whiskeylist.setOnItemClickListener(this);

at the end of onCreate

You might also write anonymous OnItemClickListener as in here: http://developer.android.com/resources/tutorials/views/hello-listview.html

Upvotes: 1

Dimitris Makris
Dimitris Makris

Reputation: 5183

Although the above answers work, I think that the problem in your current implementation is that you don't call:

whiskeylist.setOnItemClickListener(this);

I think this should do the work!

Upvotes: 2

havexz
havexz

Reputation: 9590

Derive your class from ListActivity and remove the implements OnItemClickListener

Put below code in onCreate

setListAdapter(whiskeylist);

And then have this as your onItemClick

@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);

  String[] listitem_data = DataArryWhiskey[position].split(","); // break passed sting into a array comma seperated

  ...your code....
  startActivity(currentintent);
}

Also refer to:

ListActivity ListView

Upvotes: 2

Sander van&#39;t Veer
Sander van&#39;t Veer

Reputation: 5980

If your activity only cotains this ListView, you should use a ListActivity. These are made specifically for activities that only contain lists.

One of the methods for ListActivities is onListItemClick. That one is specifically for clicking on items in lists, as the name says. The reason your code doesn't work is because onItemClick isn't generally used for clicking in Lists, but for clicking other objects in Activities.

Try changing your code based on the samples here: ListActivity

Upvotes: 2

Related Questions