Android listview中使用checkbox「建议收藏」

Android listview中使用checkbox「建议收藏」最近比较忙碌,我也不知道忙的什么东西,打算写的博客写了一半,还没写完,今天先扯一扯项目中遇到的一个问题,一方面防止以后遇到这个问题忘记如何解决,另一方面希望可以提供给遇到同样问题的朋友一个思路.下面开始正题,在listview的item中使用checkbox,当你按照普通的listview的用法使用时,你会遇到下面这样的问题:1.checkbox可以点击,但是listview的item无法

大家好,又见面了,我是你们的朋友全栈君。最近比较忙碌,我也不知道忙的什么东西,打算写的博客写了一半,还没写完,今天先扯一扯项目中遇到的一个问题,一方面防止以后遇到这个问题忘记如何解决,另一方面希望可以提供给遇到同样问题的朋友一个思路.

下面开始正题,在listview的item中使用checkbox,当你按照普通的listview的用法使用时,你会遇到下面这样的问题:

1.checkbox可以点击,但是listview的item无法点击

2.无法获得checkbox被点击的是哪一行

第一个问题涉及到事件分发,下一篇再扯(我会按照我的理解,通俗易懂的来描述),第二个问题我的理解就是getview无法重绘的原因,这里拿不到position的值,为了能解决我的问题,我需要换一种思路,也就是我今天介绍的方法:屏蔽checkbox的选择事件,也就是说checkbox不能响应选中事件,当用户点击listview的item时,制造假象,用代码控制选中checkbox

恩,差不多就这些了,由于代码直接写到项目中了,就不写demo了,直接贴一下主要代码,仅供参考,如果您有更好的方法可以相互交流

1,设置 checkbox无法响应点击事件

android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false" 

2.适配器中声明一个值用来控制checkbox的选中情况

private static HashMap<Integer,Boolean> isSelected;

public static HashMap<Integer,Boolean> getIsSelected() {  
        return isSelected;  
    }  
  
    public static void setIsSelected(HashMap<Integer,Boolean> isSelected) {  
    	MyDocShowAdapter.isSelected = isSelected;  
    }  

isSelected = new HashMap<Integer, Boolean>(); 
        for(int i=0; i<list.size();i++) {  
            getIsSelected().put(i,false);  
        } 

3.根据item的点击情况,给checkbox赋值

mListView.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> parent, View view,
					int position, long id) {
				ViewHolder holder = (ViewHolder) view.getTag(); 
				holder.mCheckBox.toggle();
				MyDocShowAdapter.getIsSelected().put(position, holder.mCheckBox.isChecked());
			}
		});

今天就到这,有问题请留言,多交流

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163299.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python浪漫表白源码(附带详细教程)_python网站开发实例

    python浪漫表白源码(附带详细教程)_python网站开发实例本文实例为大家分享了python七夕浪漫表白的具体代码,供大家参考,具体内容如下fromturtleimport*fromtimeimportsleepdefgo_to(x,y):up()goto(x,y)down()defbig_Circle(size):#函数用于绘制心的大圆speed(1)foriinrange(150):forward(size)right(0….

    2022年9月16日
    0
  • Nginx动静分离实现

    Nginx动静分离实现Nginx是一种轻量级,高性能,多进程的Web服务器,非常适合作为静态资源的服务器使用,而动态的访问操作可以使用稳定的Apache、Tomcat及IIS等来实现,这里就以Nginx作为代理服务器的同时,也使用其作为静态资源的服务器,而动态的访问服务器就以Apache为例说明。

    2022年6月12日
    33
  • 小米4usb调试模式怎么打开_安卓打开USB调试模式

    小米4usb调试模式怎么打开_安卓打开USB调试模式我们要将小米4与电脑进行连接,就必须要打开小米4系统的调试模式,不同的系统版本打开调试模式的方法有所不同,在这里我们就谈谈小米4各种系统版本打开USB调试模式的方法。1、针对Android2.1-2.2版本的系统:我们在桌面按小米4手机上的“菜单键”会弹出菜单,点击“设置”选项进入系统的设置菜单列表,然后进入“应用程序”—“开发”,就可以看到“USB调试”选项,我们勾选即可。2、针…

    2025年11月8日
    1
  • Swift的属性,方法,下标脚本以及继承

    Swift的属性,方法,下标脚本以及继承

    2021年12月16日
    62
  • RxJS教程

    RxJS教程

    2021年6月8日
    112
  • emwin移植1「建议收藏」

    emwin移植1「建议收藏」声明:本文是转载的  原文地址:https://blog.csdn.net/wangyijieonline/article/details/76795084 之所以转载,就试为了做一个笔记而已,也为方便后来人,对原作者表示感谢 然后有了一个正常显示的demo还不够,还必须要准备好这么几个函数,后面要用到。 1,LCD_DrawPoint(x,y,PixelIndex);//画点…

    2022年10月15日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号