0

我尝试为自定义列表视图设置 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(); 
                    }
          }); 

但是,当我单击列表视图中的复选框时,它不会显示 toast 消息。在列表视图中选中复选框时,如何获取位置?

4

3 回答 3

0

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

于 2013-09-25T12:09:24.613 回答
0

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

android:descendantFocusability="blocksDescendants"

否则,项目内的复选框将处理该事件。这将允许您处理列表视图中的事件。

例如,如果您的项目的布局以

<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>
于 2013-09-25T12:10:31.800 回答
0

试试这个,使用setOnCheckedChangeListener

   mHolder.mcheckbox
                    .setOnCheckedChangeListener(new OnCheckedChangeListener() {

                        @Override
                        public void onCheckedChanged(
                                CompoundButton buttonView, boolean isChecked) {
                //Do your stuff here
                        }
                    });
于 2013-09-25T12:10:56.863 回答