溫馨提示×

溫馨提示×

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

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

Android中如何使用RecyclerView實現(xiàn)簡單購物車功能

發(fā)布時間:2022-02-13 19:15:01 來源:億速云 閱讀:415 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)Android中如何使用RecyclerView實現(xiàn)簡單購物車功能的內(nèi)容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

具體內(nèi)容如下

我們知道在ListView中用setTag來解決Item的復(fù)用問題,但是RecyclerView中已經(jīng)幫我們封裝好了復(fù)用,如果在項目中出現(xiàn)了RecyclerView的復(fù)用性問題時我們又該如何解決.
先來看看效果圖:

Android中如何使用RecyclerView實現(xiàn)簡單購物車功能

圖片可能比較大也沒有動態(tài)圖片但效果是這樣的!幾天后就該有的都會有好了廢話不說,進(jìn)入正題

復(fù)用錯誤分析:

RecyclerView設(shè)置數(shù)據(jù)源時加入了if判斷,導(dǎo)致item重用時沒有進(jìn)入if判斷.繼續(xù)復(fù)用原來設(shè)置的UI屬性.簡單是說就是當(dāng)你滑動是你的是用的上一頁的子條目容器,RecyclerView默認(rèn)沒有設(shè)置選中數(shù)據(jù)的話是用上一頁條目的數(shù)據(jù).OK既然知道了問題的原因,那我們來裸代碼?.

具體操作:

//  定義一個全局變量
// public SparseBooleanArray booleanArray = new SparseBooleanArray();
        //設(shè)置CheckBox的選中監(jiān)聽并給集合設(shè)置數(shù)據(jù)
        holder1.mCbx.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                booleanArray.put(i, isChecked);

            }
        });
//設(shè)置數(shù)據(jù)
holder1.mCbx.setChecked(booleanArray.get(i));

購物車算錢:

購物車算錢這個就很簡單了,你不會什么也得會算錢?
直接上代碼:

//給CheckBox設(shè)置一個點擊事件并回調(diào)給界面的Activity
holder1.mCbx.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mOnCBXOnClickListener != null) {
                    mOnCBXOnClickListener.onClick(v, i);
                }
            }
        });

然后我們要注意的是double類型的數(shù)據(jù)會出現(xiàn)精度的問題,就比如算的好好的出現(xiàn)12.0000000002,等一系列長數(shù),所以為了解決這個問題我們這邊引入了DecimalFormat類.

// private double  aggregateAmount;
 // DecimalFormat 類主要靠 # 和 0 兩種占位符號來指定數(shù)字長度。0 表示如果位數(shù)不足則以 0 填充,# 會把最后面的零默認(rèn)省略。
        //DecimalFormat df = new DecimalFormat("0.000");
        final DecimalFormat decimalFormat = new DecimalFormat("#.##");
        mRlvAdapter.setCBXOnClickListener(new RlvAdapter.onCBXOnClickListener() {
            @Override
            public void onClick(View v, int i) {
                CheckBox cbx = v.findViewById(R.id.cbx);
                if (cbx.isChecked()) {

                    aggregateAmount+=mRlvAdapter.mlist.get(i).getBuySpeciTotalPrice();
                    String str = decimalFormat.format(aggregateAmount);
                    money.setText("合計金額:  "+str);
                } else {
                    aggregateAmount-=mRlvAdapter.mlist.get(i).getBuySpeciTotalPrice();

                    String sss = decimalFormat.format(aggregateAmount);
                    money.setText("合計金額:  "+sss);
                }
            }
        });

感謝各位的閱讀!關(guān)于“Android中如何使用RecyclerView實現(xiàn)簡單購物車功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,讓大家可以學(xué)到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI