计算回收站视图中项目列表中项目的总价

马克·卡尔顿

我想计算 List 中物品的价格并将值存储在sharedpreference. 每个项目都有一个采用双精度形式的价格。问题是当我使用我的方法时,它只考虑列表中的一个项目并计算该值。我正在使用 aNumberPicker来更改项目的数量。

这是我的适配器,用于处理将显示在 上的项目列表RecyclerView

public class CartAdapter extends RecyclerView.Adapter<CartAdapter.ViewHolder> {
    private List<SingleItem> items;
    private SessionManager sessionManager;
    private Context context;
    private int pos;

    public CartAdapter() {
    }

    public CartAdapter(Context context, List<SingleItem> items) {
        this.items = items;
        this.context = context;
        sessionManager = new SessionManager(context);

    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.cartitem, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        final SingleItem singleItem = items.get(position);
        holder.tv_title.setText(singleItem.getTitle());
        holder.tv_price.setText("Ksh: " + singleItem.getPrice());
        Picasso.with(context).load(singleItem.getUrl()).fit().into(holder.imgcart);
        holder.numcart.setMinValue(1);
        holder.numcart.setMaxValue(15);
        holder.numcart.setWrapSelectorWheel(false);
        int qty = holder.numcart.getValue();
        getTotal(qty, singleItem.getPrice());
    }

    public double getTotal(int value, double amount){

        double totalamount;
        double amountall = amount;
        int quantity = value;
        totalamount = amountall * quantity;
        sessionManager.grandtotal("Ksh: " + totalamount);
        return totalamount;
    }


    @Override
    public int getItemCount() {
        return items.size();
    }

    public void removeItem(SingleItem item) {
        sessionManager.removeitem(context,item);
        items.remove(item);
        notifyDataSetChanged();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        TextView tv_price;
        TextView tv_title;
        NumberPicker numcart;
        ImageView imgcart;

        public ViewHolder(View view) {
            super(view);

            tv_price = (TextView) view.findViewById(R.id.titlecart);
            tv_title = (TextView) view.findViewById(R.id.pricecart);
            numcart = (NumberPicker) view.findViewById(R.id.pickercart);
            imgcart = (ImageView) view.findViewById(R.id.imgcart);
        }
    }
}

这是我在片段上显示 RecyclerView 的方式:

public class Details extends Fragment {
    private RecyclerView RecyclerDetails;
    private TextView CartPrice;
    private CheckBox CheckCart;
    private List<SingleItem> list;
    private CartAdapter adapter;
    private boolean add = false;
    private Paint p = new Paint();
    private SessionManager sessionManager;
    private int pos;



    public Details() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_details, container, false);

        RecyclerDetails = (RecyclerView) view.findViewById(R.id.recyclercart);
        CartPrice = (TextView) view.findViewById(R.id.tvcarttotal);
        CheckCart = (CheckBox) view.findViewById(R.id.chkcart);

        sessionManager = new SessionManager(getContext());

        Toasty.info(getContext(),"Swipe to go to Next", Toast.LENGTH_SHORT,true).show();

        RecyclerDetails.setHasFixedSize(true);
        RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
        RecyclerDetails.setLayoutManager(layoutManager);

        list = sessionManager.getItems(getContext());

        HashMap<String,String> map = sessionManager.itemstostring();
        String data = map.get(SessionManager.KEY_ITEMS);
        Log.i(Constants.TAG,data);

        HashMap<String,String> tot = sessionManager.getgrandtotal();
        String total = tot.get(SessionManager.KEY_TOTAL);

        CartPrice.setText(total);

       CheckCart.setOnClickListener(new View.OnClickListener() {
           @Override
           public void onClick(View v) {
               if (((CheckBox) v).isChecked()){
                   sessionManager.saveditems("true");
               } else {
                   sessionManager.saveditems("false");
               }
           }
       });

        RecyclerDetails.addOnItemTouchListener(new RecyclerItemClickListener(getContext(), new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            }
        }));


        if(list != null){
            adapter = new CartAdapter(getContext(),list);
            RecyclerDetails.setAdapter(adapter);
            }

        initswipe();
        return view;
    }

    private void initswipe() {
        ItemTouchHelper.SimpleCallback simpleItemTouchCallback = new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.RIGHT) {

            @Override
            public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
                return false;
            }

            @Override
            public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
                int position = viewHolder.getAdapterPosition();

                if (direction == ItemTouchHelper.RIGHT) {
                    adapter.removeItem(list.get(position));
                    sessionManager.saveitems(getContext(),list);

                }

            }

            @Override
            public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {

                Bitmap icon;
                if(actionState == ItemTouchHelper.ACTION_STATE_SWIPE){

                    View itemView = viewHolder.itemView;
                    float height = (float) itemView.getBottom() - (float) itemView.getTop();
                    float width = height / 3;

                    if(dX > 0){
                        p.setColor(Color.parseColor("#14a895"));
                        RectF background = new RectF((float) itemView.getLeft(), (float) itemView.getTop(), dX,(float) itemView.getBottom());
                        c.drawRect(background,p);
                        icon = BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_menu_delete);
                        RectF icon_dest = new RectF((float) itemView.getLeft() + width ,(float) itemView.getTop() + width,(float) itemView.getLeft()+ 2*width,(float)itemView.getBottom() - width);
                        c.drawBitmap(icon,null,icon_dest,p);
                    } else {
                        p.setColor(Color.parseColor("#14a895"));
                        RectF background = new RectF((float) itemView.getRight() + dX, (float) itemView.getTop(),(float) itemView.getRight(), (float) itemView.getBottom());
                        c.drawRect(background,p);
                        icon = BitmapFactory.decodeResource(getResources(),android.R.drawable.ic_menu_delete);
                        RectF icon_dest = new RectF((float) itemView.getRight() - 2*width ,(float) itemView.getTop() + width,(float) itemView.getRight() - width,(float)itemView.getBottom() - width);
                        c.drawBitmap(icon,null,icon_dest,p);
                    }
                }
                super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
            }
        };
        ItemTouchHelper itemTouchHelper = new ItemTouchHelper(simpleItemTouchCallback);
        itemTouchHelper.attachToRecyclerView(RecyclerDetails);
    }

}

最后,这是我用来存储列表中所有项目总和的函数

public void grandtotal (String total){
        editor.putString(KEY_TOTAL,total);
        editor.commit();
    }

    public HashMap<String, String> getgrandtotal(){
        HashMap<String, String> tot = new HashMap<>();
        tot.put(KEY_TOTAL,pref.getString(KEY_TOTAL,null));
        return tot;
    }

是否有我没有包含在我RecyclerView与项目一起显示的片段中的功能

只是需要一个小的改变吗?

nitish29
private int grandTotal(List<SingleItem> items){

int totalPrice = 0;
for(int i = 0 ; i < items.size(); i++) {
    totalPrice += items.get(i).getPrice(); 
}

return totalPrice;
}

这是您需要实施以获得总价的方法。您可以在添加项目或从列表中删除项目时调用此方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

限制要在回收站视图中显示的项目

来自分类Dev

项目未显示在回收站视图中

来自分类Dev

当我从回收站视图中删除项目时,回收站视图没有刷新?

来自分类Dev

通过单击回收站视图中的项目更新活动视图

来自分类Dev

通过回收站视图项目的位置以打开新的活动

来自分类Dev

视差对回收站视图中的每个项目都有影响吗?

来自分类Dev

如何在不删除回收站视图中的位置的情况下删除项目?

来自分类Dev

我们可以在回收站视图中调整项目高度吗?

来自分类Dev

如何使用RxJava处理回收站视图的项目单击

来自分类Dev

回收站视图无法选择所有项目

来自分类Dev

在还原之前,获取回收站中某个项目的还原位置

来自分类Dev

将项目值保存在回收站视图对象 android 中

来自分类Dev

专注于回收站查看项目

来自分类Dev

回收站查看其他项目不同项目的装饰

来自分类Dev

如何修复未显示已删除项目的回收站?

来自分类Dev

当我尝试在回收站视图中过滤列表时,为什么 filterResults 为 null?

来自分类Dev

水平回收站视图一次包含多个项目

来自分类Dev

Android:从微调框选择的项目上更新回收站视图所需的建议

来自分类Dev

如何通过单击回收站视图的项目启用菜单项?

来自分类Dev

将新项目添加到顶部的回收站视图

来自分类Dev

回收站视图中的无线电组

来自分类Dev

如何在回收站视图中更改字体?

来自分类Dev

如何在Android的回收站视图中运行for循环?

来自分类Dev

Android:在回收站视图中设置文本

来自分类Dev

滑动以在动态更新的回收站视图中关闭

来自分类Dev

回收站视图中的单选单选按钮(重复)

来自分类Dev

列表视图项目回收

来自分类Dev

列表视图中项目的最大高度?

来自分类Dev

当回收站视图中的数据项增加时,回收站视图数据将位于文本视图下

Related 相关文章

  1. 1

    限制要在回收站视图中显示的项目

  2. 2

    项目未显示在回收站视图中

  3. 3

    当我从回收站视图中删除项目时,回收站视图没有刷新?

  4. 4

    通过单击回收站视图中的项目更新活动视图

  5. 5

    通过回收站视图项目的位置以打开新的活动

  6. 6

    视差对回收站视图中的每个项目都有影响吗?

  7. 7

    如何在不删除回收站视图中的位置的情况下删除项目?

  8. 8

    我们可以在回收站视图中调整项目高度吗?

  9. 9

    如何使用RxJava处理回收站视图的项目单击

  10. 10

    回收站视图无法选择所有项目

  11. 11

    在还原之前,获取回收站中某个项目的还原位置

  12. 12

    将项目值保存在回收站视图对象 android 中

  13. 13

    专注于回收站查看项目

  14. 14

    回收站查看其他项目不同项目的装饰

  15. 15

    如何修复未显示已删除项目的回收站?

  16. 16

    当我尝试在回收站视图中过滤列表时,为什么 filterResults 为 null?

  17. 17

    水平回收站视图一次包含多个项目

  18. 18

    Android:从微调框选择的项目上更新回收站视图所需的建议

  19. 19

    如何通过单击回收站视图的项目启用菜单项?

  20. 20

    将新项目添加到顶部的回收站视图

  21. 21

    回收站视图中的无线电组

  22. 22

    如何在回收站视图中更改字体?

  23. 23

    如何在Android的回收站视图中运行for循环?

  24. 24

    Android:在回收站视图中设置文本

  25. 25

    滑动以在动态更新的回收站视图中关闭

  26. 26

    回收站视图中的单选单选按钮(重复)

  27. 27

    列表视图项目回收

  28. 28

    列表视图中项目的最大高度?

  29. 29

    当回收站视图中的数据项增加时,回收站视图数据将位于文本视图下

热门标签

归档