Android 如何将setOnItemClickListener设置为listview?

Android 如何将setOnItemClickListener设置为listview?,android,listview,android-listview,Android,Listview,Android Listview,我尝试为自定义listview设置OnItemClickListener。我将适配器设置为 final ListView searchlist = (ListView) findViewById(R.id.prodlist); String[] from = new String[] {"rowid", "col_1", "col_2","col_3"}; int[] to = new int[] { R.id.checkBox1, R.id.editText1, R.id.editText2,

我尝试为自定义listview设置OnItemClickListener。我将适配器设置为

final ListView searchlist = (ListView) findViewById(R.id.prodlist);
String[] from = new String[] {"rowid", "col_1", "col_2","col_3"};
int[] to = new int[] { R.id.checkBox1, R.id.editText1, R.id.editText2, R.id.editText3}; 

 //added data to the components using for loop.

 SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.prod_view,from, to);
 list.setAdapter(adapter); 
      list.setOnItemClickListener(new OnItemClickListener()
            {
                    public void onItemClick(AdapterView<?> arg0, View v, int position, long id)
                    {
                    Toast.makeText(Prod.this,"" + position, Toast.LENGTH_SHORT).show(); 
                    }
          }); 
final ListView searchlist=(ListView)findviewbyd(R.id.prodlist);
字符串[]from=新字符串[]{“rowid”、“col_1”、“col_2”、“col_3”};
int[]to=newint[]{R.id.checkBox1,R.id.editText1,R.id.editText2,R.id.editText3};
//使用for循环向组件添加数据。
simpledapter adapter=newsimpledapter(this,fillMaps,R.layout.prod_视图,from,to);
list.setAdapter(适配器);
list.setOnItemClickListener(新的OnItemClickListener()
{
public void onItemClick(AdapterView arg0,视图v,内部位置,长id)
{
Toast.makeText(Prod.this,“+”位置,Toast.LENGTH_SHORT.show();
}
}); 

但是,当我在listview中单击复选框时,它不会显示toast消息。当在listview中选中复选框时,我如何获得位置?

然后实现复选框单击事件。为什么要实现ListView单击事件。使用setTag()和getTag(),获得正确的复选框id,然后实现复选框单击事件。

您需要将以下属性添加到项目的布局中:

android:descendantFocusability="blocksDescendants"
否则,项目内的复选框将处理该事件。这将允许您在listview中处理事件

例如,如果项目的布局以

<RelativeLayout        
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants" >

... the rest of the item

</RelativeLayout>

... 项目的其余部分

试试这个,使用
setOnCheckedChangeListener

   mHolder.mcheckbox
                    .setOnCheckedChangeListener(new OnCheckedChangeListener() {

                        @Override
                        public void onCheckedChanged(
                                CompoundButton buttonView, boolean isChecked) {
                //Do your stuff here
                        }
                    });

当您在listview项目内单击时,将显示Toast消息。添加复选框后,必须管理适配器内的复选框事件。请检查适配器内的事件。我想删除所选listview中的所有项目。为此,只有我在listview.ya中实现了,但您也可以使用on复选框listener来完成。单击复选框时删除(位置)。