Android:获取listview onClick到新意图

时间:2011-12-25 23:04:51

标签: android listview

我hava得到了下面的代码。我想在点击列表中的单个项目时启动活动。但是当我什么也没发生的时候。我也希望每个项目都引用相同的intent calld“com.whiskey.app.view”并发送一个由sql查询给出的id变量。我几次浏览代码,但似乎无法让它工作。

  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);

}

4 个答案:

答案 0 :(得分:2)

如果您的activity仅包含此ListView,则应使用ListActivity。 这些是专门为仅包含列表的活动而创建的。

ListActivities的其中一种方法是onListItemClick。正如名称所示,那个专门用于点击列表中的项目。 您的代码无效的原因是onItemClick通常不会用于点击Lists,而是用于点击Activities中的其他对象。

尝试根据以下示例更改代码:ListActivity

答案 1 :(得分:2)

ListActivity导出您的课程,然后移除implements OnItemClickListener

将以下代码放在onCreate

setListAdapter(whiskeylist);

然后将此作为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);
}

另请参阅:

ListActivity ListView

答案 2 :(得分:2)

虽然上述答案有效,但我认为您当前实施中的问题是您不打电话:

whiskeylist.setOnItemClickListener(this);

我认为这应该做的工作!

答案 3 :(得分:1)

您尚未为点击操作添加侦听器,请尝试添加:

whiskeylist.setOnItemClickListener(this);
在onCreate

结束时

您也可以在此处编写匿名OnItemClickListener:     http://developer.android.com/resources/tutorials/views/hello-listview.html