java - 在 Android ListView 中添加商品价格

标签 java android listview arraylist addition

我有一个包含项目名称和价格的 ListView ,我编写了代码,因此当我单击一个项目时,它会在屏幕底部的一个小对话框中显示其价格,但现在当我单击另一个项目时,我想添加该项目商品的价格到第一个商品的价格,依此类推..

这是我现在的代码:

 @Override
        public View getView(final int position, final View convertView, ViewGroup parent) // inflating the layout and initializing widgets
        {

            View rowView = convertView;
            ViewHolder viewHolder = null;
            if (rowView == null) {
                LayoutInflater inflater = getLayoutInflater();
                rowView = inflater.inflate(R.layout.listcontent, parent, false);
                viewHolder = new ViewHolder();
                viewHolder.textName = rowView.findViewById(R.id.name);
                viewHolder.textData = rowView.findViewById(R.id.details);
                viewHolder.textImage = rowView.findViewById(R.id.price);
                viewHolder.producticon = rowView.findViewById(R.id.producticon);
                rowView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            // here setting up names and images
            viewHolder.textName.setText(parkingList.get(position).getProname() + "");
            viewHolder.textData.setText(parkingList.get(position).getData());
           viewHolder.textImage.setText(parkingList.get(position).getImage());
            Picasso.with(context).load(parkingList.get(position).getProducticon()).into(viewHolder.producticon);


            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
                    //What happens when you click on a place!
//                    Intent intent = new Intent(LoggedIn.this,MapsActivity.class);
//                    startActivity(intent);
                    final int count = 0;

                    LayoutInflater inflater2 = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    final Dialog mBottomSheetDialog = new Dialog(context, R.style.MaterialDialogSheet);
                    View content =  inflater2.inflate(R.layout.activity_main2, null);
                    mBottomSheetDialog.setContentView(content);
                    TextView textView = (TextView) content.findViewById(R.id.mebuyss);
                    final TextView itemcount = (TextView) content.findViewById(R.id.itemcount);
                    Button plus = (Button) content.findViewById(R.id.plus);
                    Button minus = (Button) content.findViewById(R.id.minus);
                    Button finish = (Button) content.findViewById(R.id.finishgettingitem);
                    textView.setText(parkingList.get(position).getProname());
                    plus.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {

                           counter = counter + 1;
                           itemcount.setText(String.valueOf(counter));
                        }
                    });
                    minus.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            counter --;
                            if(counter<0){
                                counter=0;
                            }
                            itemcount.setText(String.valueOf(counter));
                        }
                    });
                    final Dialog mBottomSheetDialog2 = new Dialog(context, R.style.MaterialDialogSheet);
                    final View content2 =  inflater2.inflate(R.layout.smalldialog, null);
                    final TextView total = (TextView) content2.findViewById(R.id.totalpriceofsmalldialog);
                    total.setText(null);
                    finish.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            String get = itemcount.getText().toString();
                            Float last = Float.parseFloat(get) * Float.parseFloat(parkingList.get(position).getImage());
                            mBottomSheetDialog.dismiss();


                            mBottomSheetDialog2.setContentView(content2);
                            mBottomSheetDialog2.setCancelable(false);
                            mBottomSheetDialog2.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                            mBottomSheetDialog2.getWindow().setGravity(Gravity.BOTTOM);

                            total.setText(String.valueOf(last));
                            mBottomSheetDialog2.show();
                            mBottomSheetDialog2.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
                            mBottomSheetDialog2.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                               WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
                            doneonce = true;
                        }
                    });
//                    if (doneonce = true){
//                        Float priceofitem = parseFloat(parkingList.get(position).getImage());
//                        Float currentprice = parseFloat(total.getText().toString());
//                        Float finalfloat = priceofitem * currentprice;
//                        total.setText(String.valueOf(finalfloat));
//
//                    }
                    mBottomSheetDialog.setCancelable(true);
                    mBottomSheetDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                    mBottomSheetDialog.getWindow().setGravity(Gravity.BOTTOM);
                    if (!mBottomSheetDialog.isShowing()){
                        counter = 1;
                    }
//

                    mBottomSheetDialog.show();






                }
            });



            return rowView;
        }

我尝试使用 boolean 值,但它没有达到我的预期。 我将不胜感激任何帮助!

最佳答案

所有代码(getView() 方法)都在 ArrayAdapter 类中吗?如果是这样,请将您的监听器注册移到您的 Activity 中,然后监听器只需从所选项目中提取所需的值并将其附加到您的 Activity 类的属性中,然后引发 View 以显示运行总计。

关于java - 在 Android ListView 中添加商品价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61510352/

相关文章:

java - 我如何获得移动平均线?

java - Android按钮onClick在xml中找不到关联方法

java - Java 中的复活节日期和 UML 方法语法

android - Espresso 单击 Textview 中的特定子字符串

android - 带有 awsconfiguration.json 的 sourceSets

java - 应用程序没有从编辑文本中获取值(value),似乎在跳行

安卓 : selectors for custom listviews

java - 让 JPanel 变得更大

android - 从 commonsware endlessAdapter 检索数据

java - 单击 ListView 项目时应用程序不断崩溃