千家信息网

Android中如何实现带图片和checkbox的listview

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"Android中如何实现带图片和checkbox的listview"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Android中如何实现带图
千家信息网最后更新 2026年11月02日Android中如何实现带图片和checkbox的listview

这篇文章主要介绍"Android中如何实现带图片和checkbox的listview"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"Android中如何实现带图片和checkbox的listview"文章能帮助大家解决问题。

先新建一个MyAdapter类,继承自BaseAdapter。在MyAdapter中实现对数据的绑定,我这儿由于是测试的,所以把数据写死了。

Java代码

package com.zwq.umeng;        import java.util.ArrayList;    import java.util.HashMap;    import java.util.List;    import java.util.Map;        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.ImageView;    import android.widget.TextView;        public class MyAdapter extends BaseAdapter {        private LayoutInflater mInflater;        private List> mData;        public static Map isSelected;            public MyAdapter(Context context) {            mInflater = LayoutInflater.from(context);            init();        }            //初始化        private void init() {            mData=new ArrayList>();            for (int i = 0; i < 5; i++) {                Map map = new HashMap();                map.put("img", R.drawable.icon);                map.put("title", "第" + (i + 1) + "行的标题");                mData.add(map);            }            //这儿定义isSelected这个map是记录每个listitem的状态,初始状态全部为false。            isSelected = new HashMap();            for (int i = 0; i < mData.size(); i++) {                isSelected.put(i, false);            }        }            @Override        public int getCount() {            return mData.size();        }            @Override        public Object getItem(int position) {            return null;        }            @Override        public long getItemId(int position) {            return 0;        }            @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder holder = null;            //convertView为null的时候初始化convertView。            if (convertView == null) {                holder = new ViewHolder();                convertView = mInflater.inflate(R.layout.vlist, null);                holder.img = (ImageView) convertView.findViewById(R.id.img);                holder.title = (TextView) convertView.findViewById(R.id.title);                holder.cBox = (CheckBox) convertView.findViewById(R.id.cb);                convertView.setTag(holder);            } else {                holder = (ViewHolder) convertView.getTag();            }            holder.img.setBackgroundResource((Integer) mData.get(position).get(                    "img"));            holder.title.setText(mData.get(position).get("title").toString());            holder.cBox.setChecked(isSelected.get(position));            return convertView;        }            public final class ViewHolder {            public ImageView img;            public TextView title;            public CheckBox cBox;        }    }

上面类中要注意getView()方法中对数据的处理。

接下要新建一个list.xml文件,这个就是布局image、textview、checkbox。

Java代码

                                

android:layout_weight="1"这一句可以使中间的textview权重增大,从而后面的checkbok可以居右显示。

android:focusable="false"           android:focusableInTouchMode="false"           android:clickable="false"

这三句很重要,如果不加就会出现错误。

由于checkbox的点击事件优先级比listview的高,所以要在checkbox中添加android:focusable="false",使得checkbox初始的时候没有获取焦点。

接下来在main.xml中添加Listview组件

Java代码

接下来就是在activity中调用:

Java代码

list=(ListView)findViewById(R.id.lv);            MyAdapter adapter=new MyAdapter(this);            list.setAdapter(adapter);            list.setItemsCanFocus(false);            list.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);                list.setOnItemClickListener(new OnItemClickListener(){                @Override                public void onItemClick(AdapterView parent, View view,                        int position, long id) {                    ViewHolder vHollder = (ViewHolder) view.getTag();    //在每次获取点击的item时将对于的checkbox状态改变,同时修改map的值。                    vHollder.cBox.toggle();                    MyAdapter.isSelected.put(position, vHollder.cBox.isChecked());                }            });

看一下效果图:

要获取哪些项目被选择了,可以这样测试:

Java代码

OnClickListener bPop = new OnClickListener() {            @Override            public void onClick(View v) {                for(int i=0;i

关于"Android中如何实现带图片和checkbox的listview"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。

代码 图片 数据 状态 知识 接下来 就是 方法 时候 行业 测试 不同 实用 重要 事件 优先级 内容 可以使 同时 实用性 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 保险科技 互联网保险 广州为想互联网科技有限公司 互联网科技公司华为 科技与互联网 互联网巨头反垄断金融科技 互联网科技金融 礼当家互联网科技 安徽鑫晟辉互联网科技 长亮科技 互联网金融 深圳卡尔迅互联网科技有限公司怎么样 互联网和高科技公司 互联网科技与管理 互联网和黑科技的看法 济南有互联网科技公司吗 互联网科技资金流入 2021世界互联网领先科技成果发布 米泉互联网科技专业怎么样 互联网科技博主张洲 恒生科技指数 中概互联网 新华互联网科技学校 广西拼得多互联网科技有限公司 浙江互联网科技研学营 昊天互联网科技有限公司 速维有品互联网信息科技(苏州)有限公司 四川互联网展示科技馆设计 互联网科技包装股份有限公司上市 萌小萌互联网科技河南有限公司 互联网科技手机排行榜 中国主要互联网科技公司
0