android listview 切换,Android:在ListView适配器中切换OnCheckedChangeListener
我在我的应用程序中有一个listView。对于listView中的每个元素,它都有一个Switch。以前我在listView Adapter的getView方法中为Switch实现了一个onClickListener。但是,我发现虽然它在用户单击交换机时工作,但当用户在交换机上滑动时,它不起作用。然后我尝试将onClickListener更改为onCheckedChangeListener。当用户在Switch上单击或滑动时,它可以工作,但是,当我滚动ListView以使元素消失时,我发现最初选中的Switch未被选中。Android:在ListView适配器中切换OnCheckedChangeListener
你能帮忙吗?下面是我的getView方法在ListView适配器代码:
@Override
public View getView(final int position, View convertView, final ViewGroup parent) {
class viewHolder {
public TextView tvSceneName;
public Switch swSelectSwitch;
}
final viewHolder holder;
final View v = convertView;
// Use ViewHolder to avoid findViewById each time the user scroll
if (convertView == null) {
holder = new viewHolder();
convertView = mInflater.inflate(R.layout.scene_list_element, parent, false);
holder.tvSceneName = (TextView) convertView.findViewById(R.id.tvSceneName);
holder.swSelectSwitch = (Switch) convertView.findViewById(R.id.swScene);
convertView.setTag(holder);
} else {
holder = (viewHolder) convertView.getTag();
}
if(holder.swSelectSwitch != null) {
// Set the switch to correct on/off status
holder.swSelectSwitch.setChecked(mDataSource.get(position).get_isOn());
// Set up On checked change listener for the switch
holder.swSelectSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
// Set the new status to arraylist
Switch sw = (Switch) v.findViewById(R.id.swScene);
MainActivity.sceneArrayList.get(position).set_isOn(sw.isChecked());
});
}
}
编辑: 在进一步的测试中,我发现有错误在我的新增onCheckChangedListener(因为我从复制的一些代码onClickListener)。另外我找到了一个解决方案,它是在我通过代码设置Switch之前将onCheckChangedListener设置为null。
if(holder.swSelectSwitch != null) {
// Set the switch to correct on/off status
holder.swSelectSwitch.setOnCheckedChangeListener(null);
holder.swSelectSwitch.setChecked(mDataSource.get(position).get_isOn());
// Set up On checked change listener for the switch
holder.swSelectSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
// Set the new status to arraylist
mDataSource.get(position).set_isOn(isChecked);
});
}
2016-11-08
eepty
+1
您正在使用两个列表:
你应该mDataSource在发生变化时更新状态。他们有相同的参考?如果没有,你正在更新一个不同的列表,所以在你滚动之后清楚为什么你的复选框没有更新。其他的事情是你为什么不使用onCheckedChanged监听器的参数,而不是使用findviewbyId –
+0
@Alex你是对的,我发现我应该使用isChecked参数。我使用findviewbyId,因为我只是从onClickedListner复制代码。 onClickedListener没有这个参数。列表是一样的。事实上,我不清楚如何使用listView,当它有很多组件和数据源是复杂的。 –
android listview 切换,Android:在ListView适配器中切换OnCheckedChangeListener相关推荐
- linux 脚本 切换目录,在shell脚本中切换目录ros生成
用VB打造自己的SQL连接器 大家好.....好长时间没上网了...祝大家新年快乐....好了.工程开始 现建一个普通窗口..放上3个textBox控件. 一个是用来输入ip的txtaddres..还 ...
- Android中ListView的使用以及使用适配器设置数据源
场景 Android中使用Adapter(适配器)给RecycleView设置数据源: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/detail ...
- android listview item按钮,android-listview适配器中的按钮
任何可以解决我的问题..经过2天的奋斗,我终于获得了70%的产出. Exp:我有listview哪些数据来自服务器.在Listview里面有一些文本,按钮和滚动索引A,BC,D,E,F,G. 问题:按 ...
- android listview 切换,Android ListView切换按钮
我有一个Listview将列出数据库中的警报.我需要在每个列表项旁边添加一个切换按钮以设置警报的开/关状态. 如何在列表视图中添加切换按钮? R.layout.alarm_list: android: ...
- android listview高级,Android 高级控件笔记-列表视图ListView 基本适配器BaseAdapter
我最近做项目用到了基本适配器BaseAdapter,所以写篇博客总结一下,希望也能对你有所帮助 什么时候用BaseAdapter(同一项存在多个控件,复杂的列表时) Android中Adapter类其 ...
- android listview动态添加viewpager,向 ViewPager 中添加 包含 ListView 的 Fragment
对与fragment就不说什么了,直接看API手册吧,亲. 向 ViewPager 中添加 包含 ListView 的 Fragment 的过程比较麻烦.他所表现的效果就是新闻客户端的滑动翻页效果. ...
- android自定义空的view,ListView android中的自定义空视图
如果ListView适配器中没有数据,我想显示刷新Button和TextView.我还希望能够向将重新加载列表的按钮添加单击侦听器.以下是我定义当前活动的方式: protected void onCr ...
- android cbox listview特效,Android CheckBox和ImageView、Textview在ListView中显示...
1.首先创建一个适配器类CheckBoxListViewAdapter,此类继承BaseAdapter类: package com.test; import java.util.ArrayList; ...
- android微信模拟,Android中使用ListView模拟微信好友功能
效果图: 分析: 1.创建listView 2.创建数据 3.创建适配器 将数据放到呈现数据的容器里面. 将这个容器(带数据)连接适配器. 其实是直接在我们自己写的adapter的getView重载方 ...
最新文章
- 深度学习先驱Bengio:AI顶会论文的Deadline是时候取消了
- 监控haproxy的脚本
- Angular 如何自定义 pipe 管道以及参数传递问题
- DetachedCriteria和Criteria的使用方法
- python工厂模式 取代__init___浅析Python 简单工厂模式和工厂方法模式的优缺点
- 高级语言中的关键字:const用法分析
- 二改注册登录版素材代下载搜索引擎系统源码,自带火车头采集
- python类的初始化方法_python学习之-对象的的初始化与__init__方法
- python使用sql读取数据表并返回dataframe
- Spring Security整合JWT,实现单点登录,So Easy~!
- android手机常用功能,Windows Phone 7/Android手机常用功能对比
- c++ 优先队列_数据结构 | TencentOStiny中队列、环形队列、优先级队列的实现及使用...
- 聊一聊大火的对比学习
- 工业级嵌入式串口转wifi模块
- 实例讲解EasyLanguage入门
- 阿里云天池大赛赛题解析——深度学习篇
- 【天池】金融风控贷款违约预测task5
- ssh登录提示密码错误
- 154 万 AI 开发者用数据告诉你,中国 AI 如何才能弯道超车?
- 百度经纬度转腾讯地图经纬度
热门文章
- qpython3可视图形界面_PySide——Python图形化界面入门教程(三)
- 利用逆矩阵解线性方程组_机器人学导论---第四章 操作臂逆运动学(一)4.1-4.11...
- linux php连接orcel,Linux下PHP连接Oracle数据库
- comet for java_java comet tomcat推送
- Gemstones(牛客第八场多校)
- rk3288 android4.4,ubuntu16.04下firefly rk3288的编译安卓4.4
- 分布电容和杂散电容_什么是“寄生电容”?
- 系统底部返回遮挡_一加7 Pro这个新功能让大家久等了:屏幕两侧一滑就可返回...
- python快速上手 让繁琐工作自动化 英文版_入门python:《Python编程快速上手让繁琐工作自动化》中英文PDF+代码...
- 『设计模式』小伙你的穿搭很潮!--装饰者模式