亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android checkbox的listView(多選,全選,反選)具體實現方法

2020-04-11 12:13:25
字體:
來源:轉載
供稿:網友
布局文件:
[html] 
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 

    <TextView 
        android:id="@+id/tv" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_vertical" /> 

    <LinearLayout 
        android:id="@+id/line" 
        android:layout_width="fill_parent" 
        android:layout_height="50dp" 
        android:layout_below="@+id/tv" 
        android:orientation="horizontal" > 

        <Button 
            android:id="@+id/bt_selectall" 
            android:layout_width="80dp" 
            android:layout_height="fill_parent" 
            android:text="全選" /> 

             <Button 
            android:id="@+id/bt_cancleselectall" 
            android:layout_width="80dp" 
            android:layout_height="fill_parent" 
            android:text="反選" /> 

         
        <Button 
            android:id="@+id/bt_deselectall" 
            android:layout_width="80dp" 
            android:layout_height="fill_parent" 
            android:text="取消選擇" /> 

    </LinearLayout> 

    <ListView 
        android:id="@+id/lv" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        android:layout_below="@+id/line" /> 

</RelativeLayout> 
 


 
listView 的item布局文件:

[html]
復制代碼 代碼如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" > 

    <TextView 
        android:id="@+id/item_tv" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_vertical" 
        android:layout_weight="1" /> 

    <CheckBox 
        android:id="@+id/item_cb" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:clickable="false" 
        android:focusable="false" 
        android:focusableInTouchMode="false" 
        android:gravity="center_vertical" /> 

</LinearLayout> 
 


Activity:

[java]
復制代碼 代碼如下:

public class Ex_checkboxActivity extends Activity { 
    private ListView lv; 
    private MyAdapter mAdapter; 
    private ArrayList<String> list; 
    private Button bt_selectall; 
    private Button bt_cancel; 
    private Button bt_deselectall; 
    private int checkNum; // 記錄選中的條目數量 
    private TextView tv_show;// 用于顯示選中的條目數量 

    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
        /* 實例化各個控件 */ 
        lv = (ListView) findViewById(R.id.lv); 
        bt_selectall = (Button) findViewById(R.id.bt_selectall); 
        bt_cancel = (Button) findViewById(R.id.bt_cancelselectall); 
        bt_deselectall = (Button) findViewById(R.id.bt_deselectall); 
        tv_show = (TextView) findViewById(R.id.tv); 
        list = new ArrayList<String>(); 
        // 為Adapter準備數據 
        initDate(); 
        // 實例化自定義的MyAdapter 
        mAdapter = new MyAdapter(list, this); 
        // 綁定Adapter 
        lv.setAdapter(mAdapter); 

        // 全選按鈕的回調接口 
        bt_selectall.setOnClickListener(new OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                // 遍歷list的長度,將MyAdapter中的map值全部設為true 
                for (int i = 0; i < list.size(); i++) { 
                    MyAdapter.getIsSelected().put(i, true); 
                } 
                // 數量設為list的長度 
                checkNum = list.size(); 
                // 刷新listview和TextView的顯示 
                dataChanged(); 
            } 
        }); 

        // 反選按鈕的回調接口 
        bt_cancel.setOnClickListener(new OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                // 遍歷list的長度,將已選的設為未選,未選的設為已選 
                for (int i = 0; i < list.size(); i++) { 
                    if (MyAdapter.getIsSelected().get(i)) { 
                        MyAdapter.getIsSelected().put(i, false); 
                        checkNum--; 
                    } else { 
                        MyAdapter.getIsSelected().put(i, true); 
                        checkNum++; 
                    } 
                } 
                // 刷新listview和TextView的顯示 
                dataChanged(); 
            } 
        }); 

        // 取消按鈕的回調接口 
        bt_deselectall.setOnClickListener(new OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                // 遍歷list的長度,將已選的按鈕設為未選 
                for (int i = 0; i < list.size(); i++) { 
                    if (MyAdapter.getIsSelected().get(i)) { 
                        MyAdapter.getIsSelected().put(i, false); 
                        checkNum--;// 數量減1 
                    } 
                } 
                // 刷新listview和TextView的顯示 
                dataChanged(); 
            } 
        }); 

        // 綁定listView的監聽器 
        lv.setOnItemClickListener(new OnItemClickListener() { 
            @Override 
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
                    long arg3) { 
                // 取得ViewHolder對象,這樣就省去了通過層層的findViewById去實例化我們需要的cb實例的步驟 
                ViewHolder holder = (ViewHolder) arg1.getTag(); 
                // 改變CheckBox的狀態 
                holder.cb.toggle(); 
                // 將CheckBox的選中狀況記錄下來 
                MyAdapter.getIsSelected().put(arg2, holder.cb.isChecked()); 
                // 調整選定條目 
                if (holder.cb.isChecked() == true) { 
                    checkNum++; 
                } else { 
                    checkNum--; 
                } 
                // 用TextView顯示 
                tv_show.setText("已選中" + checkNum + "項"); 
            } 
        }); 
    } 

    // 初始化數據 
    private void initDate() { 
        for (int i = 0; i < 15; i++) { 
            list.add("data" + " " + i); 
        } 

    } 
    // 刷新listview和TextView的顯示 
    private void dataChanged() { 
        // 通知listView刷新 
        mAdapter.notifyDataSetChanged(); 
        // TextView顯示最新的選中數目 
        tv_show.setText("已選中" + checkNum + "項"); 
    }; 



列表適配器:

[java] 
復制代碼 代碼如下:

package com.notice.listcheck; 

import java.util.ArrayList; 
import java.util.HashMap; 

import android.content.Context; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.CheckBox; 
import android.widget.TextView; 

public class MyAdapter extends BaseAdapter { 
    // 填充數據的list 
    private ArrayList<String> list; 
    // 用來控制CheckBox的選中狀況 
    private static HashMap<Integer, Boolean> isSelected; 
    // 上下文 
    private Context context; 
    // 用來導入布局 
    private LayoutInflater inflater = null; 

    // 構造器 
    public MyAdapter(ArrayList<String> list, Context context) { 
        this.context = context; 
        this.list = list; 
        inflater = LayoutInflater.from(context); 
        isSelected = new HashMap<Integer, Boolean>(); 
        // 初始化數據 
        initDate(); 
    } 

    // 初始化isSelected的數據 
    private void initDate() { 
        for (int i = 0; i < list.size(); i++) { 
            getIsSelected().put(i, false); 
        } 
    } 

    @Override 
    public int getCount() { 
        return list.size(); 
    } 

    @Override 
    public Object getItem(int position) { 
        return list.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
        return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
        ViewHolder holder = null; 
        if (convertView == null) { 
            // 獲得ViewHolder對象 
            holder = new ViewHolder(); 
            // 導入布局并賦值給convertview 
            convertView = inflater.inflate(R.layout.listviewitem, null); 
            holder.tv = (TextView) convertView.findViewById(R.id.item_tv); 
            holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb); 
            // 為view設置標簽 
            convertView.setTag(holder); 
        } else { 
            // 取出holder 
            holder = (ViewHolder) convertView.getTag(); 
        } 
        // 設置list中TextView的顯示 
        holder.tv.setText(list.get(position)); 
        // 根據isSelected來設置checkbox的選中狀況 
        holder.cb.setChecked(getIsSelected().get(position)); 
        return convertView; 
    } 

    public static HashMap<Integer, Boolean> getIsSelected() { 
        return isSelected; 
    } 

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

    public static class ViewHolder { 
        TextView tv; 
        CheckBox cb; 
    } 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久不卡| 日韩在线视频二区| 成人国产精品一区| 亚洲国产精品一区二区三区| 亚洲欧美日韩中文在线制服| 欧美国产日韩二区| 色999日韩欧美国产| 国产精品极品美女在线观看免费| 精品人伦一区二区三区蜜桃免费| 久久手机精品视频| 国产丝袜一区二区| 日韩综合中文字幕| 日韩视频精品在线| 日韩视频免费在线观看| 亚洲精品欧美日韩专区| 亚洲精品短视频| 日本久久久久久久| 欧美疯狂性受xxxxx另类| 91九色国产社区在线观看| 琪琪第一精品导航| 国产精品av在线| 久久久成人av| 久久6免费高清热精品| 视频直播国产精品| 午夜免费在线观看精品视频| 欧美性做爰毛片| 亚洲综合日韩中文字幕v在线| 日韩久久精品电影| 精品久久久久久亚洲国产300| 一级做a爰片久久毛片美女图片| 亚洲人成网7777777国产| 亚洲综合中文字幕在线观看| 国产一区二区黑人欧美xxxx| 久久久精品欧美| 久久91精品国产91久久久| 国产精品永久在线| 国产丝袜一区视频在线观看| 中文字幕一区日韩电影| 色噜噜狠狠色综合网图区| 亚洲激情国产精品| 久久婷婷国产麻豆91天堂| 精品一区二区三区四区| 久久久人成影片一区二区三区观看| 欧美一区二区三区免费观看| 日韩资源在线观看| 中文字幕亚洲欧美日韩在线不卡| 欧美激情一区二区三级高清视频| 国产精品99久久久久久久久| 亚洲直播在线一区| 在线视频日本亚洲性| 77777少妇光屁股久久一区| 欧美成人午夜激情视频| 91超碰中文字幕久久精品| 国产精品美女www爽爽爽视频| 亚洲精品成人免费| 亚洲国产日韩精品在线| 亚洲国产又黄又爽女人高潮的| 亚洲人免费视频| 日韩视频欧美视频| 亚洲成人精品久久| 亚洲韩国日本中文字幕| 57pao国产精品一区| 欧美高清电影在线看| 欧美另类第一页| 色午夜这里只有精品| 97在线观看视频| 久久久久在线观看| 中文字幕免费精品一区高清| 欧美巨乳在线观看| 欧美日韩不卡合集视频| 成人免费淫片视频软件| 成人做爽爽免费视频| 国产网站欧美日韩免费精品在线观看| 欧美激情乱人伦| 亚洲精品电影网站| 亚洲欧洲中文天堂| 国产精品欧美在线| 亚洲人精选亚洲人成在线| 国产亚洲视频在线| 777国产偷窥盗摄精品视频| 国产精品高潮呻吟视频| 国外成人性视频| 欧美亚洲另类激情另类| 日韩在线观看网址| 欧美成人自拍视频| 91色p视频在线| 综合国产在线视频| 亚洲欧美日韩第一区| 国产精品爱啪在线线免费观看| 精品香蕉在线观看视频一| 精品久久久久久久久久久久久| 日韩在线视频中文字幕| 中文字幕不卡在线视频极品| 欧美日韩免费在线观看| 欧美精品九九久久| 亚洲视频自拍偷拍| 国产亚洲一级高清| 亚洲欧美精品伊人久久| 精品性高朝久久久久久久| 国产成人97精品免费看片| 国产乱人伦真实精品视频| 久久99热这里只有精品国产| 国产精品视频一区二区三区四| 国语自产精品视频在线看抢先版图片| 性亚洲最疯狂xxxx高清| www.日本久久久久com.| 久久综合久中文字幕青草| 久久夜色精品国产亚洲aⅴ| 国产97色在线| 色综合久久中文字幕综合网小说| 欧美日韩国产成人在线| 国产乱人伦真实精品视频| 亚洲精品视频在线播放| 九九久久国产精品| 日韩电影第一页| 国产成人小视频在线观看| 亚洲国产精品成人一区二区| 欧美乱大交xxxxx另类电影| 国产精品久久久久av| 国产精品美女免费视频| 国产一区二区免费| 国产99视频在线观看| 国产亚洲欧美日韩一区二区| 国产成人一区二区三区电影| 中文字幕不卡av| 亚洲石原莉奈一区二区在线观看| 精品视频一区在线视频| 中国日韩欧美久久久久久久久| 欧美韩国理论所午夜片917电影| 国产有码在线一区二区视频| 狠狠躁夜夜躁人人爽超碰91| 福利视频第一区| 欧美日韩亚洲高清| 81精品国产乱码久久久久久| 久久国产精品久久精品| 久久99国产精品自在自在app| 亚洲精品国产suv| 日韩av在线一区| 久热精品视频在线| 久久免费国产视频| 国产精品久久久久免费a∨大胸| 日韩在线观看免费网站| 亚洲成人精品久久久| 亚洲国产精品小视频| 久久国产精彩视频| 国产99在线|中文| y97精品国产97久久久久久| 992tv在线成人免费观看| 国产精品国产亚洲伊人久久| 欧美在线视频免费播放| 中文字幕亚洲欧美日韩高清| 成人免费观看49www在线观看| 欧美精品videofree1080p| 在线成人激情视频| 亚洲va久久久噜噜噜久久天堂| 亚洲成av人片在线观看香蕉| 国产成人激情小视频| 91av视频在线免费观看| 国产欧美久久一区二区| 亚洲欧美激情另类校园| 国产精品国产自产拍高清av水多| 久久99国产精品久久久久久久久| 91免费国产视频| 日韩福利在线播放|