在ListView中添加Switch,让用户去点那个小小的开关的话体验不太好,通过点
击ListView的条目来改变Switch的开关状态.

目标效果

点击测试即可切换第一行的Swith的开关状态

需要注意的是正常添加的话Switch会屏蔽掉ListView的onItemClick事件,需要在Switch的布局文件中添加
android:focusable=“false”
否则将无法点击ListView的条目

MainActivity

public class MainActivity extends AppCompatActivity {private ListView lv;private Adapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);lv=(ListView)findViewById(R.id.lv);adapter=new Adapter(MainActivity.this);adapter.addItem("测试");adapter.addItem("测试1");adapter.addItem("测试2");lv.setAdapter(adapter);lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {Switch aSwitch=adapter.getaSwitch(i);if(aSwitch.isChecked()){aSwitch.setChecked(false);//进行业务处理}else {aSwitch.setChecked(true);//进行业务处理}}});}
}

ListView适配器

public class Adapter extends BaseAdapter {private List<String> list_title;private List<Switch> list_switch;private Context mContext;private TextView tv;private Switch aSwitch;public Adapter(Context context) {mContext=context;list_title=new ArrayList<>();list_switch=new ArrayList<>();}public void addItem(String title){list_title.add(title);}public Switch getaSwitch(int position){return list_switch.get(position);}@Overridepublic int getCount() {return list_title.size();}@Overridepublic Object getItem(int i) {return list_title.get(i);}@Overridepublic long getItemId(int i) {return i;}@Overridepublic View getView(int i, View view, ViewGroup viewGroup) {view= LayoutInflater.from(mContext).inflate(R.layout.item,null);tv=(TextView)view.findViewById(R.id.tv);aSwitch=(Switch)view.findViewById(R.id.aSwitch);list_switch.add(aSwitch);tv.setText(list_title.get(i));return view;}
}

MainAvtivity的布局文件只有一个ListView

需要注意的是ListView条目的布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/tv"android:padding="10dp"android:layout_width="wrap_content"android:layout_height="wrap_content" /><Switchandroid:id="@+id/aSwitch"android:focusable="false"android:clickable="false"android:padding="10dp"android:layout_alignParentRight="true"android:layout_width="wrap_content"android:layout_height="wrap_content" /></RelativeLayout>

在条目布局文件中将Switch的clickable也关闭是为了方便操作,处理开关事件只需要在ListView的itemClickListener中进行,无需再在Switch的onClickListener中再进行一次.

源码下载地址
https://download.csdn.net/download/woqq863787405/13637053
蓝奏:https://wwa.lanzous.com/iXFEOj9eh2b

最后,我只是安卓的新手,如有错误或更好的方法,欢迎大家在评论区进行讨论.

在ListView中嵌套Switch开关,点击ListView条目来切换Switch的状态相关推荐

  1. ListView中嵌套checkbox实现多选

    我现在要实现一个多选的ListView,当选择ListView中的checkbox的时候,可以将选中的多个checkbox所代表的值保存到数据库中!哪位高手做过类似的东西,给小弟指教指教,十分感谢! ...

  2. Android在ListView中嵌套一个GridView时只显示一行的原因及解决方法

    在之前的编程里,我还没有遇到过要在一个ListView中嵌套一个GridView或是在一个GridView中嵌套一个ListView.所以今天事儿来了!我花了一将近3个小时,找到了为什么我在一个Lis ...

  3. 小程序点击显示隐藏(点击标题,内容显示,再次点击隐藏,同时切换箭头的状态,且默认第一组的内容显示)

    哈喽,大家下午好,时间过的真快,转眼啊又好长时间没写博客啦,嘿嘿最近公司比较忙,手上一直有项目需要处理,现在终于空闲了一点,赶快来一篇呀,嘿嘿~ 最近我一直在做小程序的项目,其中值得一提的是项目中有一 ...

  4. Android listview 中嵌套 listview

    在 父listview中 adapter的 getview 中 设置 子listview 的 adapter 之后 添加下面方法,传入子listview. public void setListVie ...

  5. switch开关点击无效的解决办法:element中switch v-model绑定的值为数字类型情形

    在用到el-switch组件时,需要绑定数据为number类型,但总也绑不成功 element官方文档上说:设置该组件的active-value和inactive-value属性,可接受Boolean ...

  6. android ListView中含有按钮事件实时更新ListView数据案例-1

    1.布局文件Listview <?xml version="1.0" encoding="utf-8"?> <android.support. ...

  7. listview头部嵌套RecyclerView 完美实现竖向listview头部为横向listview

    demo下载地址找了很多资料,在eclipse里面使用recyclview..完美实现头部是一个横向recyclview,竖向是listview. demo下载链接

  8. Android旋转切换条目,Android:当我添加动态新的ListView条目时,ListView中的旋转器会丢失它们的值...

    我的活动包含一个按钮和一个ListView. ListView包含Spinner和EditText视图.每次我想在Activity的ListView中插入一个新的行条目时,我都会使用该按钮. 我遵循了 ...

  9. android listview中item通过viewpager实现

    android listview中item通过viewpager实现 android listview中item通过viewpager实现,每一个item都支持viewpager实现图片切换功能.本项 ...

最新文章

  1. 第2关:CLA182四位先行进位电路设计
  2. 机器学习(Machine Learning)深入学习(Deep Learning)资料
  3. CENTOS7 Python3.7安装pip模块以及pip使用
  4. Python中机器学习的特征选择工具
  5. raid5坏了一块盘怎么办_机械硬盘的坏道处理——屏蔽之
  6. oracle零碎要点---oracle em的web访问地址忘了
  7. 管理对象空间——管理存储参数
  8. 微信公众号模板消息 access_token missing
  9. VMware安装Ubuntu配置NAT模式下静态IP,解决访问外网问题
  10. TSC条码打印机常见故障及解决方法
  11. python贪吃蛇游戏无法运行_Python贪吃蛇游戏编写代码
  12. 上拉查看详情和下拉隐藏详情
  13. 阿里云产品介绍(一):云服务器ECS
  14. 为什么顶级程序员都有超强逆商?顶级程序员马化腾在艰难的时候,是如何度过的?
  15. 5款最好的安卓界面设计工具推荐
  16. 广东海洋大学微型计算机控制技术,LCD显示实验(综合性)
  17. 图片url显示服务器,服务器上图片的url地址
  18. 4.15 使用渐变映射命令制作艺术效果 [原创Ps教程]
  19. 学生成绩录入案例----python基础入门
  20. Sublime 中快速打开网页

热门文章

  1. 中关村颠覆性技术创新项目资助政策及申报条件重点介绍,补贴500万
  2. 中国芯片行业市场十四五前景预测与供给情况分析报告2022-2027年
  3. 阿里云网盘福利码分享-100M/S不限速网盘
  4. 8259A中断控制器详细介绍
  5. FPGA学习步骤(打算以后也转FPGA了,毕竟工资比硬件工程师高)
  6. 【产品推荐】河道水质监测站——水质监测平台
  7. 学习新事物:神奇的读心术
  8. 回调函数(简单易懂)
  9. 象棋 Java设计(java课程设计)计算机科学与技术
  10. Mandriva 的起源