android 当ListView滚动时自动调用 onCheckedChanged

今天在做一个含有CheckBox 的ListView时,发现当初始化CheckBox的状态后, 滚动ListView,其中CheckBox 的选中状态不停的发生变化。最后发现原因是 ListView滚动时自动调用 onCheckedChanged 导致的。在查看了各种博客的解决办法后,国外的网站上有一个办法解决了我的问题。写下来分享一下。

在自定义Adapter的getView方法中这样写就行了。

//在初始化CheckBox状态和设置状态变化监听事件之前,先把状态变化监听事件设置为null
holder.checkBox.setOnCheckedChangeListener(null);
//然后设置CheckBox状态
if(isChecked) {
    holder.checkbox.setChecked(true);
} else {
    holder.checkbox.setChecked(false);
}
//然后设置状态变化监听事件
holder.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
    @Override
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(isChecked){
            //...
        }else{
            //....
        }
    }
});

  源码下载:http://code.662p.com/list/11_1.html

时间: 2024-10-10 16:37:31

android 当ListView滚动时自动调用 onCheckedChanged的相关文章

android 当ListView滚动时自动调用 onCheckedChanged 导致CheckBox 状态不停变化 的解决办法

今天在做一个含有CheckBox 的ListView时,发现当初始化CheckBox的状态后, 滚动ListView,其中CheckBox 的选中状态不停的发生变化.最后发现原因是 ListView滚动时自动调用 onCheckedChanged 导致的.在查看了各种博客的解决办法后,国外的网站上有一个办法解决了我的问题.写下来分享一下. 在自定义Adapter的getView方法中这样写就行了. Java代码   //在初始化CheckBox状态和设置状态变化监听事件之前,先把状态变化监听事件

android 从源码分析为什么Listview初次显示时没滚动却自动调用onScroll方法的原因

我们做Listview的分批加载时,需要为Listview调用setOnScrollListener(具体代码可见我上一篇博客) 可是,我们会发现,当运行程序时,listview明明没有滚动,那为什么系统会调用onScroll方法呢?(补充:此时onScrollStateChanged并不会调用) 我们先看setOnScrollListener源码: public void setOnScrollListener(OnScrollListener l) { mOnScrollListener =

android 检测ListView滚动到的位置

ListView滚动 1.要用到一个监听事件是:setOnScrollListener(); API解释是: Set the listener that will receive notifications every time the list scrolls. Parameters:l the scroll listener 2.它里面包含了两个方法: 一个是:onScrollStateChanged(AbsListView view, int scrollState),用来表明ListVi

Object之魔术函数__toString() 直接输出对象引用时自动调用

__toString()是快速获取对象的字符串信息的便捷方式 在直接输出对象引用时自动调用的方法. __toString()的作用 当我们调试程序时,需要知道是否得出正确的数据.比如打印一个对象时,看看这个对象都有哪些属性,其值是什么,如果类定义了toString方法,就能在测试时,echo打印对象体,对象就会自动调用它所属类定义的toString方法,格式化输出这个对象所包含的数据. 下面我们来看一个__toString()的实例 <?php class Person{ private $na

Android中ListView选中时的黄色底色

Android的ListView中默认选中时底色为黄色,如何去掉呢 其中会用到一个属性: android:listSelector="#00000000" 这样就行了 Android中ListView选中时的黄色底色

listView获取item的Edit内容,listView中的edit内容在滚动时自动赋值了前面的内容

Today I am going to explain how to create a ListView with EditText and why will we need a TextWatcher to implement the same. Before starting the topic, let us know why this topic is necessary. Issue: As we know ListView reuses the view of  ListItem a

android中listview滚动结束处理

最近项目中遇到一个问题,小米4的手机.android listview在滚动时无法收到onScrollStateChanged的callback. 导致某个状态无法复位. 处理如下: public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { this.currentFirstVisibleItem = firstVisibleItem; this

通用Adapter与ListView滚动时不加载图片的封装

本文原创,转载请注明链接:http://blog.kymjs.com/ 在Android开发中写Adapter是一件非常麻烦的事情,枯燥重复,却又不得不去做. 对于Adapter一般都继承BaseAdapter复写几个方法,getView里面使用ViewHolder存储,其实大部分的代码都是类似的.那么本文就带大家一起做一次将Adapter封装成一个通用的Adapter. 关于本文的完整Demo,可以参考KJFrameForAndroid开发框架2.2版本中封装的实例,KJAdapter和Ada

Android中ListView滑动时数据混乱

相信做过Android应用开发的或多或少的都遇到过这样的问题,要不就是在ListView滑动时出现数据混乱,或者是GridView滑动时出现数据混乱.先来看看一位网友写的文章,个人感觉这篇文章挺不错的: Android ListView滑动过程中图片显示重复错位闪烁问题解决 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制. 1.原因分析 ListView item缓存机制:为了使得性能更优,ListView会缓存行i