您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Android中如何使用RecyclerView實現簡單購物車功能的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
具體內容如下
我們知道在ListView中用setTag來解決Item的復用問題,但是RecyclerView中已經幫我們封裝好了復用,如果在項目中出現了RecyclerView的復用性問題時我們又該如何解決.
先來看看效果圖:
圖片可能比較大也沒有動態圖片但效果是這樣的!幾天后就該有的都會有好了廢話不說,進入正題
RecyclerView設置數據源時加入了if判斷,導致item重用時沒有進入if判斷.繼續復用原來設置的UI屬性.簡單是說就是當你滑動是你的是用的上一頁的子條目容器,RecyclerView默認沒有設置選中數據的話是用上一頁條目的數據.OK既然知道了問題的原因,那我們來裸代碼?.
具體操作:
// 定義一個全局變量 // public SparseBooleanArray booleanArray = new SparseBooleanArray(); //設置CheckBox的選中監聽并給集合設置數據 holder1.mCbx.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { booleanArray.put(i, isChecked); } }); //設置數據 holder1.mCbx.setChecked(booleanArray.get(i));
購物車算錢:
購物車算錢這個就很簡單了,你不會什么也得會算錢?
直接上代碼:
//給CheckBox設置一個點擊事件并回調給界面的Activity holder1.mCbx.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mOnCBXOnClickListener != null) { mOnCBXOnClickListener.onClick(v, i); } } });
然后我們要注意的是double類型的數據會出現精度的問題,就比如算的好好的出現12.0000000002,等一系列長數,所以為了解決這個問題我們這邊引入了DecimalFormat類.
// private double aggregateAmount; // DecimalFormat 類主要靠 # 和 0 兩種占位符號來指定數字長度。0 表示如果位數不足則以 0 填充,# 會把最后面的零默認省略。 //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); } } });
感謝各位的閱讀!關于“Android中如何使用RecyclerView實現簡單購物車功能”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。