zoukankan      html  css  js  c++  java
  • Android listview中使用checkbox

    最近比较忙碌,我也不知道忙的什么东西,打算写的博客写了一半,还没写完,今天先扯一扯项目中遇到的一个问题,一方面防止以后遇到这个问题忘记如何解决,另一方面希望可以提供给遇到同样问题的朋友一个思路.
    下面开始正题,在listview的item中使用checkbox,当你按照普通的listview的用法使用时,你会遇到下面这样的问题:
    1.checkbox可以点击,但是listview的item无法点击
    2.无法获得checkbox被点击的是哪一行
    第一个问题涉及到事件分发,下一篇再扯(我会按照我的理解,通俗易懂的来描述),第二个问题我的理解就是getview无法重绘的原因,这里拿不到 position的值,为了能解决我的问题,我需要换一种思路,也就是我今天介绍的方法:屏蔽checkbox的选择事件,也就是说checkbox不能 响应选中事件,当用户点击listview的item时,制造假象,用代码控制选中checkbox

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

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

    1. android:clickable="false"  
    2.         android:focusable="false"  
    3.         android:focusableInTouchMode="false"   


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

    1.     private static HashMap<Integer,Boolean> isSelected; 
    1.     public static HashMap<Integer,Boolean> getIsSelected() {    
    2.             return isSelected;    
    3.         }    
    4.         
    5.         public static void setIsSelected(HashMap<Integer,Boolean> isSelected) {    
    6.             MyDocShowAdapter.isSelected = isSelected;    
    7.         }    
    1.     isSelected = new HashMap<Integer, Boolean>();   
    2.             for(int i=0; i<list.size();i++) {    
    3.                 getIsSelected().put(i,false);    
    4.             } 

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

      1. mListView.setOnItemClickListener(new OnItemClickListener() {  
      2.   
      3.             @Override  
      4.             public void onItemClick(AdapterView<?> parent, View view,  
      5.                     int position, long id) {  
      6.                 ViewHolder holder = (ViewHolder) view.getTag();   
      7.                 holder.mCheckBox.toggle();  
      8.                 MyDocShowAdapter.getIsSelected().put(position, holder.mCheckBox.isChecked());  
      9.             }  
      10.         }); 
  • 相关阅读:
    ASP.NET 表单验证 Part.1(理解表单验证)
    Silverlight 简介 Part.3(设计 Siverlight 页面)
    ASP.NET 成员资格 Part.3(LoginStatus、LoginView、PasswordRecovery)
    ASP.NET 网站部署 Part.1(安装IIS、复制文件部署网站)
    ASP.NET Dynamic Data Part.1(创建动态数据应用程序)
    ASP.NET 安全模型 Part.2(SSL)
    ASP.NET MVC Part.2(扩展基本的 MVC 应用程序)
    ASP.NET 网站部署 Part.2(使用 Web 部署)
    开发高级 Web 部件
    创建 Web 部件(WebPart 类、简单的 Web 部件)
  • 原文地址:https://www.cnblogs.com/awkflf11/p/4613930.html
Copyright © 2011-2022 走看看