欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

解决listView中的Item监听和item中按钮或者复选框的冲突问题

程序员文章站 2022-07-13 12:33:02
...

前段时间遇到了一个问题,lListView一直得不到OnItemClickListener监听,很苦恼,不知道是什么原因出现的这种问题。经过仔细查看,这次的ListView和以往的不同,这次的ListView的每一项多个一个复选框,从网上查到,复选框的OnCheckedChangeListener事件和ListView的OnItemClickListener时间有冲突,复选框的OnCheckedChangeListener事件会优先于ListView的OnItemClickListener时间,因此,如果ListView中的Item中包括复选框或者按钮时。都是这些控件会有响应的事件,而ListView却失去了响应。解决这个问题其实很简单。

1:就是在你的ListView的自定义的adapter里面给这个控件单独设置监听。单,前提是要先将对话框或者按钮的focusable属性设置为false,这在xml文件中就可以设置: android:focusable="false"。

2: 在你自定义的适配器中定义一个方法用于给复选框或者按钮添加监听

public void addListener(View convertView, int arg) {

//给复选框添加监听,给按钮添加监听就类似了
  ((CheckBox) convertView.findViewById(R.id.xuanze))
    .setOnCheckedChangeListener(new OnCheckedChangeListener() {
     @Override
     public void onCheckedChanged(CompoundButton buttonView,
       boolean isChecked) {
      new AlertDialog.Builder(
        ExchangePartActivity.exchangePart)
        .setTitle("自定义通用SimpleAdapter")
        .setMessage("CheckBox成功触发状态改变监听事件!").show();
     }
    });
 }

3:在适配器的getView方法中调用这个方法就OK了!