91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何理解SparseBooleanArray

發布時間:2021-11-26 11:07:13 來源:億速云 閱讀:281 作者:柒染 欄目:開發技術

這篇文章給大家介紹如何理解SparseBooleanArray,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

  項目過程中,常常會遇到多選列表的問題。問題不麻煩,但似乎每一次的實現都不一樣,或者說不規范吧。之前一直使用的HashMap<Integer, Boolean>來記錄列表的選中情況,但心中一直惦記著其使用SparseBooleanArray的建議。心中甚是浮躁,靜下心來總結一個知識點竟然到了需要“天時地利人和”的地步。

 SparseBooleanArray是android提供的工具類,有人翻譯成“稀疏數組”。是專門為手機這種內存資源稀缺的平臺提供的 。根據其源代碼,在數量不多的情況下,相比HashMap<Integer, Object>效率更高。這里的Integer相當于索引,而在SparseArray<E>中這個索引使用的是二分法查找。

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

    MyAdapter(@NonNull Context context, @LayoutRes int resource, @NonNull List<String> 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就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

彩票| 伊川县| 遂溪县| 兰坪| 大悟县| 思南县| 平定县| 图们市| 松江区| 遂溪县| 沙坪坝区| 孝义市| 长治县| 伊金霍洛旗| 天台县| 衡水市| 宜黄县| 措美县| 额尔古纳市| 衡南县| 屯门区| 枣强县| 建平县| 内黄县| 绵竹市| 黔江区| 文登市| 临颍县| 达拉特旗| 扬中市| 乐亭县| 巴彦淖尔市| 西藏| 宣威市| 平江县| 朝阳县| 中西区| 普格县| 建德市| 剑川县| 彰武县|