如何理解SparseBooleanArray-创新互联

这篇文章给大家介绍如何理解SparseBooleanArray,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

创新互联公司是一家集网站建设,准格尔企业网站建设,准格尔品牌网站建设,网站定制,准格尔网站建设报价,网络营销,网络优化,准格尔网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

 项目过程中,常常会遇到多选列表的问题。问题不麻烦,但似乎每一次的实现都不一样,或者说不规范吧。之前一直使用的HashMap来记录列表的选中情况,但心中一直惦记着其使用SparseBooleanArray的建议。心中甚是浮躁,静下心来总结一个知识点竟然到了需要“天时地利人和”的地步。

 SparseBooleanArray是android提供的工具类,有人翻译成“稀疏数组”。是专门为手机这种内存资源稀缺的平台提供的 。根据其源代码,在数量不多的情况下,相比HashMap效率更高。这里的Integer相当于索引,而在SparseArray中这个索引使用的是二分法查找。

public class MyAdapter extends ArrayAdapter {
    private Context mContext;
    private List mData;
    private SparseBooleanArray selectList = new SparseBooleanArray();

    MyAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List objects) {
        super(context, resource, objects);
        this.mContext = context;
        this.mData = objects;
        initSelectList();
    }

    @NonNull
    @Override
    public View getView(final int position, @Nullable View convertView, @NonNull ViewGroup parent) {
        if (convertView == null){
            convertView = LayoutInflater.from(mContext).inflate(R.layout.item_choice, parent, false);
        }
        TextView text = (TextView) convertView.findViewById(R.id.text);
        CheckBox box = (CheckBox) convertView.findViewById(R.id.checkbox);

        text.setText(getItem(position));
        box.setChecked(selectList.get(position));
        box.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                selectList.put(position, isChecked);
            }
        });
        return convertView;
    }

    void initSelectList() {//全部取消选中
        for (int i = 0; i < mData.size(); i++) {
            selectList.put(i, false);
        }
        notifyDataSetChanged();
    }

    void checkAll(){//全选
        for (int i = 0; i < mData.size(); i++) {
            selectList.put(i, true);
        }
        notifyDataSetChanged();
    }

    void reverse(){//反选
        for (int i = 0; i < mData.size(); i++) {
            if (selectList.get(i)){
                selectList.put(i, false);
            }else{
                selectList.put(i, true);
            }
        }
        notifyDataSetChanged();
    }

    SparseBooleanArray getSelectedList(){
        return selectList;
    }
}

关于如何理解SparseBooleanArray就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:如何理解SparseBooleanArray-创新互联
文章URL:http://ybzwz.com/article/dcpidi.html