Android listview中使用checkbox

來源:互聯網
上載者:User

標籤:

最近比較忙碌,我也不知道忙的什麼東西,打算寫的部落格寫了一半,還沒寫完,今天先扯一扯項目中遇到的一個問題,一方面防止以後遇到這個問題忘記如何解決,另一方面希望可以提供給遇到同樣問題的朋友一個思路.
下面開始正題,在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.         }); 

Android listview中使用checkbox

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.