如何在Android中处理ListView点击
我如何聆听ListView上的单击事件?
这是我现在所拥有的
ListView list = (ListView)findViewById(R.id.ListView01); ... list.setAdapter(adapter); 
当我做以下
 list.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { public void onItemSelected(AdapterView parentView, View childView, int position, long id) { setDetail(position); } public void onNothingSelected(AdapterView parentView) { } }); 
 这似乎没有做任何事情点击。 
 所有这些代码都存在于扩展Activity的类中。 
 在你的列表视图中,使用setOnItemClickListener 
假设ListView对象是lv,请执行以下操作 –
 lv.setClickable(true); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { Object o = lv.getItemAtPosition(position); /* write you handling code like... String st = "sdcard/"; File f = new File(st+o.toString()); // do whatever u want to do with 'f' File object */ } }); 
您需要在适配器类getView()方法中设置充气的视图“Clickable”和“能够听取点击事件”。
 convertView = mInflater.inflate(R.layout.list_item_text, null); convertView.setClickable(true); convertView.setOnClickListener(myClickListener); 
并在ListActivity中声明单击监听器,如下所示,
 public OnClickListener myClickListener = new OnClickListener() { public void onClick(View v) { //code to be written to handle the click event } }; 
只有当您通过扩展BaseAdapter来定制适配器时,这才是真实的。
请参阅ANDROID_SDK / samples / ApiDemos / src / com / example / android / apis / view / List14.java以获取更多详细信息
 我的两个答案是正确的 – 你可以使用OnItemClickListener 。 
 值得注意的是, OnItemClickListener和OnItemSelectedListener之间的区别,虽然听起来很微妙,但实际上很重要,因为项目select和焦点与AdapterView的触摸模式有关。 
默认情况下,在触摸模式下,没有select和焦点。 你可以在这里看看关于这个主题的更多信息。
 你必须使用setOnItemClickListener有人说。 
 代码应该是这样的: 
 listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // When clicked, show a toast with the TextView text or do whatever you need. Toast.makeText(getApplicationContext(), ((TextView) view).getText(), Toast.LENGTH_SHORT).show(); } }); 
首先,类必须实现点击监听器:
 implements OnItemClickListener 
然后设置一个监听器到ListView
 yourList.setOnItemclickListener(this); 
最后,创buildclic方法:
 @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, "You Clicked at " +countries[+ position], Toast.LENGTH_SHORT).show(); } 
你可以看看这里下载代码
这个解决scheme真的很简单,不会搞乱你的代码。
在你的list_item.xml (不是listView!)中分配属性android:onClick就像这样:
 <RelativeLayout android:onClick="onClickDoSomething"> 
然后在你的活动中调用这个方法:
 public void onClickDoSomething(View view) { // the view is the line you have clicked on } 
在你的活动中使用setOnItemClickListener()api。 以下是样本。
 listView.setOnItemClickListener(new AdapterView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<> parent, View view, int position, long id) { // your code here. } });