android使用CheckedTextView搭配listview完成选择列表
16lz
2021-12-04
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}}}
更多相关文章
- android 设置textview边框以及点击效果
- Android(安卓)手机bluetooth 名字的设置
- 初学Andriod之跑马灯属性设置
- Android(安卓)Studio Gradle相关异常记录
- android使用CheckedTextView搭配listview完成选择列表
- Android处理各种触摸事件
- Android(安卓)JB 4.2 中InputManager 启动过程解析 -- 1
- Android获取、设置桌面
- 设置Android程序的默认安装位置