阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1167|回复: 0

[转帖] android中实现带图片和checkbox的listview

[复制链接]
  • TA的每日心情
    开心
    2012-3-7 10:15
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2012-1-10 09:55:33 | 显示全部楼层 |阅读模式
    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组件
    [代码] MyAdapter.javapackage 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<Map<String, Object>> mData;
        public static Map<Integer, Boolean> isSelected;
        public MyAdapter(Context context) {
            mInflater = LayoutInflater.from(context);
            init();
        }
        //初始化
        private void init() {
            mData=new ArrayList<Map<String, Object>>();
            for (int i = 0; i < 5; i++) {
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("img", R.drawable.icon);
                map.put("title", "第" + (i + 1) + "行的标题");
                mData.add(map);
            }
            //这儿定义isSelected这个map是记录每个listitem的状态,初始状态全部为false。
            isSelected = new HashMap<Integer, Boolean>();
            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;
        }
    }
    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表