android使用CheckedTextView搭配listview完成选择列表

列表list_checktextview.xml

<?xml version="1.0" encoding="utf-8"?>        

 

代码:

package com.example.myapp;import java.util.ArrayList;import java.util.HashMap;import java.util.Map.Entry;import java.util.Set;import android.app.ListActivity;import android.content.Context;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.AdapterView;import android.widget.AdapterView.OnItemClickListener;import android.widget.BaseAdapter;import android.widget.CheckedTextView;import android.widget.ImageView;import android.widget.ListView;public class ListCheckedTextView extends ListActivity {private ArrayList> arrlist = new ArrayList>();private ListView listView;private HashMap checkedMap = new HashMap();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);getdata();/* * 设置ListView的适配器 有两种方式加载含CheckedTextView的多选模式并响应事件 1. 但是这种方式,选择多选响应事件时 * 各个Item会出现乱弹的现象,不知道为什么 希望各位大虾帮帮忙 //适配器设置 setListAdapter(new * SimpleAdapter(this, arrlist, R.layout.list_checktextview, new * String[]{"title"}, new int[]{R.id.checktv_title})); //listview的监听事件 * listView.setOnItemClickListener(new OnItemClickListener() { *  * @Override public void onItemClick(AdapterView<?> parent, View view, * int position, long id) { checktv = (CheckedTextView) * parent.getChildAt(position).findViewById(R.id.checktv_title); * if(checktv.isChecked()){ checktv.setChecked(false); }else{ * checktv.setChecked(true); } } }); 2. 通过自定义Adapter实现 如下, */setListAdapter(new MyAdapter(this, arrlist));listView = getListView();listView.setItemsCanFocus(false);listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);// listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);//单选listView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {/* * 对于由position指定的项目,返回其是否被选中。 * 只有当选择模式已被设置为CHOICE_MODE_SINGLE或CHOICE_MODE_MULTIPLE时 ,结果才有效。 */boolean checked = getListView().isItemChecked(position);checkedMap.put(position, checked);getListView().setItemChecked(position, checked);}});}// 构造数据private ArrayList> getdata() {HashMap map = new HashMap();map.put("title", "aaaa");arrlist.add(map);map = new HashMap();map.put("title", "bbbb");arrlist.add(map);map = new HashMap();map.put("title", "cccc");arrlist.add(map);return arrlist;}// 自定义Adapter,从checkMap中获取当前Item的状态 并设置private class MyAdapter extends BaseAdapter {private LayoutInflater inflater;ArrayList> datalist;public MyAdapter(Context context,ArrayList> datalist) {super();inflater = LayoutInflater.from(context);this.datalist = datalist;}@Overridepublic int getCount() {return datalist.size();}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ViewHolder holder = null;if (convertView == null) {convertView = inflater.inflate(R.layout.list_checktextview,null);holder = new ViewHolder();holder.checktv_title = (CheckedTextView) convertView.findViewById(R.id.checktv_title);holder.imageView=(ImageView)convertView.findViewById(R.id.dianjiceshi);convertView.setTag(holder);} else {holder = (ViewHolder) convertView.getTag();}holder.imageView.setOnClickListener(new myClickimg());holder.checktv_title.setText(datalist.get(position).get("title").toString());// 根据checkMap中position的状态设置是否被选中if (checkedMap.get(position) != null&& checkedMap.get(position) == true) {holder.checktv_title.setChecked(true);} else {holder.checktv_title.setChecked(false);}return convertView;}class ViewHolder {CheckedTextView checktv_title;ImageView imageView;}}class myClickimg implements View.OnClickListener{@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stuballNo();}}/* * 全否 * */public void allNo(){Set> re = checkedMap.entrySet();for (Entry entry : re) {Integer mkey = entry.getKey();//全部设置为falsecheckedMap.put(mkey, false);setListAdapter(new MyAdapter(getApplicationContext(), arrlist));//更新ui}}}

更多相关文章

  1. android 设置textview边框以及点击效果
  2. Android(安卓)手机bluetooth 名字的设置
  3. 初学Andriod之跑马灯属性设置
  4. Android(安卓)Studio Gradle相关异常记录
  5. android使用CheckedTextView搭配listview完成选择列表
  6. Android处理各种触摸事件
  7. Android(安卓)JB 4.2 中InputManager 启动过程解析 -- 1
  8. Android获取、设置桌面
  9. 设置Android程序的默认安装位置

随机推荐

  1. 花式框内的内容需要响应
  2. jQuery动画div滑动,不覆盖文本。
  3. 关于input的一些问题解决方法分享
  4. css让背景图片拉伸填充的属性
  5. 解决FCKEditor编辑器在浏览器返回时显示h
  6. 关于struts漏洞之---/struts/webconsole.
  7. 图像未加载到HTML页面的jQuery load()中
  8. 如何在HTML标记上打印/显示动态值?
  9. css+html实现自适应宽度的菜单学习
  10. 用HTML做的简单的个人简历