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

首頁 > 學院 > 開發設計 > 正文

ListView + CheckBox實現單選、多選效果

2019-11-09 14:49:57
字體:
來源:轉載
供稿:網友

轉載請注明出處:http://blog.csdn.net/darling_R/article/details/54947377 本文出自:哎呀小嘿的博客

還是先來看看是不是你想要的效果: 這里寫圖片描述

不廢話,直接上代碼,很簡單,代碼里都有注釋

1 單選

public class SingleActivity extends AppCompatActivity { PRivate ListView listView; private ArrayList<String> groups; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_single); listView = (ListView) this.findViewById(R.id.lvGroup); groups = new ArrayList<String>(); groups.add("11"); groups.add("22"); groups.add("33"); groups.add("44"); groups.add("55"); groups.add("66"); groups.add("77"); AdapterView.OnItemClickListener listItemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 取得ViewHolder對象,這樣就省去了通過層層的findViewById去實例化我們需要的cb實例的步驟 SingleAdapter.ViewHolder viewHolder = (SingleAdapter.ViewHolder) view.getTag(); viewHolder.cb.toggle();// 把CheckBox的選中狀態改為當前狀態的反,gridview確保是單一選中 } }; SingleAdapter adapter = new SingleAdapter(this, groups); listView.setAdapter(adapter); listView.setOnItemClickListener(listItemClickListener); }}

Adapter:

public class SingleAdapter extends BaseAdapter { private Activity activity;//上下文 private ArrayList<String> list; private LayoutInflater inflater = null;//導入布局 private int temp = -1; public SingleAdapter(Activity context, ArrayList<String> list) { this.activity = context; this.list = list; inflater = LayoutInflater.from(context); } @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; } //listview每顯示一行數據,該函數就執行一次 @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) {//當第一次加載ListView控件時 convertView為空 convertView = inflater.inflate(R.layout.group_item_view, null);//所以當ListView控件沒有滑動時都會執行這條語句 holder = new ViewHolder(); holder.tv = (TextView) convertView.findViewById(R.id.item_tv); holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb); convertView.setTag(holder);//為view設置標簽 } else {//取出holder holder = (ViewHolder) convertView.getTag(); } //設置list的textview顯示 holder.tv.setTextColor(Color.WHITE); holder.tv.setText(list.get(position)); // 根據isSelected來設置checkbox的選中狀況 holder.cb.setId(position);//對checkbox的id進行重新設置為當前的position holder.cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) { if (isChecked) {//實現checkbox的單選功能,同樣適用于radiobutton if (temp != -1) { //找到上次點擊的checkbox,并把它設置為false,對重新選擇時可以將以前的關掉 CheckBox tempCheckBox = (CheckBox) activity.findViewById(temp); if (tempCheckBox != null) tempCheckBox.setChecked(false); } temp = compoundButton.getId();//保存當前選中的checkbox的id值 } } }); if (position == temp)//比對position和當前的temp是否一致 holder.cb.setChecked(true); else holder.cb.setChecked(false); return convertView; } public static class ViewHolder { TextView tv; CheckBox cb; }}

多選:

public class MulActivity extends AppCompatActivity { private ListView listView; private ArrayList<String> groups; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_mul); listView = (ListView) this.findViewById(R.id.list); groups = new ArrayList<>(); groups.add("11"); groups.add("22"); groups.add("33"); groups.add("44"); groups.add("55"); groups.add("66"); groups.add("77"); AdapterView.OnItemClickListener listItemClickListener = new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // 取得ViewHolder對象,這樣就省去了通過層層的findViewById去實例化我們需要的cb實例的步驟 MulAdapter.ViewHolder viewHolder = (MulAdapter.ViewHolder) view.getTag(); viewHolder.cb.toggle();// 把CheckBox的選中狀態改為當前狀態的反,gridview確保是單一選中 MulAdapter.getIsSelected().put(position, viewHolder.cb.isChecked());//將CheckBox的選中狀況記錄下來 } }; MulAdapter adapter = new MulAdapter(this, groups); listView.setAdapter(adapter); listView.setOnItemClickListener(listItemClickListener); }}

Adapter:

public class MulAdapter extends BaseAdapter { private Context context;//上下文 private ArrayList<String> list; //控制CheckBox選中情況 private static HashMap<Integer, Boolean> isSelected; private LayoutInflater inflater = null;//導入布局 public MulAdapter(Context context, ArrayList<String> list) { this.context = context; this.list = list; inflater = LayoutInflater.from(context); isSelected = new HashMap<Integer, Boolean>(); initData(); } private void initData() {//初始化isSelected的數據 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; } //listview每顯示一行數據,該函數就執行一次 @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) {//當第一次加載ListView控件時 convertView為空 convertView = inflater.inflate(R.layout.group_item_view, null);//所以當ListView控件沒有滑動時都會執行這條語句 holder = new ViewHolder(); holder.tv = (TextView) convertView.findViewById(R.id.item_tv); holder.cb = (CheckBox) convertView.findViewById(R.id.item_cb); convertView.setTag(holder);//為view設置標簽 } else {//取出holder holder = (ViewHolder) convertView.getTag();//the Object stored in this view as a tag } //設置list的textview顯示 holder.tv.setTextColor(Color.WHITE); holder.tv.setText(list.get(position)); // 根據isSelected來設置checkbox的選中狀況 holder.cb.setChecked(getIsSelected().get(position)); return convertView; } public static class ViewHolder { TextView tv; CheckBox cb; } public static HashMap<Integer, Boolean> getIsSelected() { return isSelected; } public static void setIsSelected(HashMap<Integer, Boolean> isSelected) { MulAdapter.isSelected = isSelected; }}

簡單吧,哈哈哈。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
免费av一区二区| 久久久精品美女| 欧美性jizz18性欧美| 狠狠久久五月精品中文字幕| 少妇高潮 亚洲精品| 欧美高清在线视频观看不卡| 最近2019中文免费高清视频观看www99| 亚洲一区二区三区sesese| 国产精品黄色影片导航在线观看| 亚洲经典中文字幕| 精品美女久久久久久免费| 久久精品色欧美aⅴ一区二区| 久久人人97超碰精品888| 美日韩丰满少妇在线观看| 国产精品精品一区二区三区午夜版| 亚洲qvod图片区电影| 日本不卡高字幕在线2019| 欧美精品久久久久a| 国产欧美一区二区三区在线| 久久久久久久久久av| 成人免费看吃奶视频网站| 国产一区二区三区18| 国产精品一区二区三| 亚洲影视中文字幕| 亚洲美女激情视频| 国产成人欧美在线观看| 亚洲成年人在线播放| 国产精品日韩电影| 在线日韩av观看| 97视频网站入口| 成人性教育视频在线观看| 色偷偷av一区二区三区乱| 欧美精品久久久久a| 久久国产精品久久久| 日韩69视频在线观看| 国产成人综合av| 色婷婷综合久久久久| 精品亚洲国产视频| 中文字幕国产精品| 久久91亚洲精品中文字幕| 国产在线观看精品一区二区三区| 亚洲图片欧洲图片av| 久久久在线视频| 久久久精品国产| 久久久免费高清电视剧观看| 成人免费看吃奶视频网站| 精品国产拍在线观看| 成人免费看黄网站| 国产91精品久久久久久久| 日韩电视剧在线观看免费网站| 欧美高清视频在线| 日韩欧美视频一区二区三区| 国产精品美女久久久久av超清| 国产亚洲人成网站在线观看| 国产亚洲美女久久| 亚洲天堂av高清| 91久久精品国产91久久性色| 精品少妇v888av| 日韩经典一区二区三区| 国产激情视频一区| 亚洲国产成人久久| 亚洲成人网在线| 最近2019好看的中文字幕免费| 亚洲国产精品女人久久久| 久久久久久久久国产| 国产精品情侣自拍| 欧美色另类天堂2015| 日韩av在线最新| 国产精品人成电影在线观看| 欧美日韩成人在线播放| 欧美第一页在线| 欧美在线观看www| 国产成人精品在线观看| 欧美日韩国产二区| 久久精品91久久香蕉加勒比| 亚洲国产精品久久久| 欧美在线精品免播放器视频| 欧美精品国产精品日韩精品| 国语自产精品视频在线看一大j8| 欧美巨大黑人极品精男| 国产午夜精品一区理论片飘花| 综合激情国产一区| 91探花福利精品国产自产在线| 国产成人综合精品| 亚洲欧美日韩另类| 秋霞午夜一区二区| 欧美在线视频播放| 欧美色道久久88综合亚洲精品| 久久这里有精品| 日韩视频免费中文字幕| 国产福利精品在线| 91国产美女视频| 久久久久久噜噜噜久久久精品| 日本精品视频在线观看| 亚洲精品国产精品国自产观看浪潮| 国产精品偷伦一区二区| 国产精品视频yy9099| 久久久久在线观看| 亚洲国产精品va在看黑人| 欧美视频免费在线观看| 97香蕉久久超级碰碰高清版| 久久国产精品久久国产精品| 久久香蕉精品香蕉| 国产精彩精品视频| 亚洲成人久久网| 成人中文字幕+乱码+中文字幕| 国产99久久精品一区二区| 爱福利视频一区| 国产综合在线看| 成人黄色影片在线| 97精品一区二区视频在线观看| 国产成人亚洲综合91精品| 91九色国产社区在线观看| 欧美极品xxxx| 亚洲国内精品在线| 久久久久中文字幕2018| 日韩极品精品视频免费观看| 成人性教育视频在线观看| 欧美大片在线影院| 日本久久久a级免费| 久久国产精品免费视频| 欧美高清视频在线播放| 亚洲www视频| 久久天天躁狠狠躁夜夜爽蜜月| 免费不卡在线观看av| 欧美成人精品一区二区三区| 日韩欧美999| 欧美日韩一区二区三区在线免费观看| 国产精品自拍视频| 欧美午夜精品在线| 日韩小视频在线| 57pao国产精品一区| 欧美第一页在线| 国产91精品青草社区| 精品久久久久久久久久久| 久久香蕉国产线看观看网| 国产suv精品一区二区| 欧美日韩国产成人| 国产精品第一视频| 日韩免费看的电影电视剧大全| 久久久国产视频91| 亚洲第一免费网站| 欧美日韩在线观看视频| 日韩一中文字幕| 亚洲午夜av久久乱码| 91精品国产色综合| 日本高清视频精品| 久久久综合免费视频| 久久久久久久久久久成人| 日韩成人在线视频| 国产精品精品久久久| 奇米成人av国产一区二区三区| 国产精品白丝av嫩草影院| 91精品视频在线播放| 欧美成人精品一区| 亚洲电影成人av99爱色| 欧美又大粗又爽又黄大片视频| 亚洲免费成人av电影| 国产一区二区在线免费| 深夜福利亚洲导航| 欧美激情综合色综合啪啪五月| 国产成人亚洲精品| 亚洲丁香婷深爱综合| 亚洲成人xxx|