Android自定义单选,自定义选中状态

本文介绍如何使用GridView展示数据,并通过自定义Adapter实现特定功能,包括屏蔽点击背景颜色变化、设置选择状态图标显示等。同时提供了Activity中点击事件的具体实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如图,此布局用GrildView实现,弹出框由Activity的dialog样式实现。

屏蔽系统GrildView点击背景黄色:

grildview.setSelector(new ColorDrawable(Color.TRANSPARENT));

实现数据源自定义Adapter

public class PeoPleNumAdapter extends BaseAdapter {

    public List<PeopleNum> FiltArray;
    public static HashMap<Integer, Boolean> isselected;
    LayoutInflater inflater;
    int pos;

    public PeoPleNumAdapter(Context context,List<PeopleNum> PeopleNumList,int pos) {
        super();
        inflater = LayoutInflater.from(context);
        this.FiltArray = PeopleNumList;
        this.pos = pos;
        isselected = new HashMap<Integer, Boolean>();
        initData();
    }

    public void initData() {
        for (int i = 0; i < FiltArray.size(); i++) {
            PeopleNum peo = FiltArray.get(i);
            if(i!=pos)
            getIsSelected().put(i, false);
            else
            getIsSelected().put(i, true);
        }
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return FiltArray.size();
    }

    @Override
    public Object getItem(int position) {
        // TODO Auto-generated method stub
        
            return FiltArray.get(position);
        
    }

    @Override
    public long getItemId(int position) {
        // TODO Auto-generated method stub
        return position;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        // TODO Auto-generated method stub

        if (view == null) {

            view = inflater.inflate(R.layout.people_grild, null);
            TextView spec = (TextView) view.findViewById(R.id.peoplenum);
            final ImageView img = (ImageView) view.findViewById(R.id.numselect);
            PeopleNum peo = FiltArray.get(position);
            spec.setText(peo.getNum());
            if (getIsSelected().get(position)) {
                img.setVisibility(View.VISIBLE);
            } else {
                img.setVisibility(View.GONE);
            }
        }
        return view;
    }

    public static HashMap<Integer, Boolean> getIsSelected() {
        return isselected;
    }

    public static void setIsSelected(HashMap<Integer, Boolean> isSelect) {
        PeoPleNumAdapter.isselected = isSelect;
    }
}

Activity中实现点击:

grildview.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                // TODO Auto-generated method stub
                PeoPleNumAdapter.getIsSelected().put(position, true);
                adapter = new PeoPleNumAdapter(context, PeopleNumList, position);
                grildview.setAdapter(adapter);
            }
        });

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值