Не удается вычислить правильное значение из каждой строки в ListView

#android

#Android

Вопрос:

// у меня есть две кнопки для увеличения и уменьшения количества, после увеличения или уменьшения значения я хочу рассчитать цену из каждой строки, но это не дает правильного значения.Также количество изменяется при прокрутке.В основном вышеупомянутая проблема возникает всякий раз, когда размер listview превышает размер экрана.

общедоступный класс Baseddapter расширяет BaseAdapter { @Override public int getCount() { возвращает prodetailarray.size(); }

     @Override
    public Object getItem(int i)
    {
        // Log.d("item_value","" prodetailarray.get(i).getPrice());
        return null;
    }

    @Override
    public long getItemId(int i)
    {
        return 0;
    }
    @Override
    public View getView(int position, View convertView, ViewGroup parent)

    {
         listrowposition = position;
         final ViewHolder holder;

        if (convertView == null)
        {
            LayoutInflater inflater = getLayoutInflater();
            convertView = inflater.inflate(R.layout.singlerowbill_detail, null);
            holder = new ViewHolder();

            holder.name = (TextView) convertView.findViewById(R.id.txtproname_prodetail);
            holder.sellprice = (TextView) convertView.findViewById(R.id.txtprice_prodetail);
            holder.proid = (TextView) convertView.findViewById(R.id.txtproid_prodetail);

            holder.qty = (TextView) convertView.findViewById(R.id.txtquntty_prodetail);

            holder.imgplus = (ImageView) convertView.findViewById(R.id.imgplus_prodetail);
            holder.imgminus = (ImageView) convertView.findViewById(R.id.imgminus_prodetail);
            holder.singlerowprice = (TextView) convertView.findViewById(R.id.txtsinglerow_price);
            holder.baseprice = (TextView) convertView.findViewById(R.id.txt_base_price_prodetail);

            holder.taxid = (TextView) convertView.findViewById(R.id.txt_taxid_prodetail);
            holder.taxname = (TextView) convertView.findViewById(R.id.txt_taxname_prodetail);
            holder.taxval = (TextView) convertView.findViewById(R.id.txt_taxval_prodetail);

            // holder.singlerowprice.addTextChangedListener(new MytextWatcher(convertView));

            holder.delete = (ImageView) convertView.findViewById(R.id.txtdeleterow);
            holder.txtkg = (TextView) convertView.findViewById(R.id.txtkg);
            holder.whole_qntty = (TextView) convertView.findViewById(R.id.txt_whole_qntty_prodetail);

            holder.delete.setTag(position);
            holder.circularImageView = (CircularImageView) convertView.findViewById(R.id.productImage_billdetail);
            holder.linearLayout = (LinearLayout) convertView.findViewById(R.id.linearkg);


            holder.name.setTypeface(light);
            holder.singlerowprice.setTypeface(light);
            holder.baseprice.setTypeface(light);
            holder.qty.setTypeface(light);

            //holder.qty.setTag(position);

            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        base_price = prodetailarray.get(listrowposition).getBaseprice();

        Log.d("baseprice==", "***"   base_price);
        holder.baseprice.setText(prodetailarray.get(listrowposition).getBaseprice());


        //this means if qnty contain only number means add as unit otherwise add as kg
        if(prodetailarray.get(listrowposition).getQntity().matches("[0-9] "))
        {
            holder.qty.setText(prodetailarray.get(position).getQntity());
            //holder.linearLayout.setVisibility(View.VISIBLE);
            holder.imgplus.setVisibility(View.VISIBLE);
            holder.imgminus.setVisibility(View.VISIBLE);
           // holder.txtkg.setVisibility(View.GONE);
            Log.d("qntty_kg??","" prodetailarray.get(listrowposition).getQntity());
        }
        else
        {
          //  holder.linearLayout.setVisibility(View.GONE);
            holder.imgplus.setVisibility(View.GONE);
            holder.imgminus.setVisibility(View.GONE);
          //  holder.txtkg.setVisibility(View.VISIBLE);
            holder.qty.setText("" prodetailarray.get(listrowposition).getQntity());
            Log.d("qntty_kg==","" prodetailarray.get(listrowposition).getQntity());
           // Toast.makeText(Bill_details.this,"" prodetailarray.get(position).getQntity(),Toast.LENGTH_LONG).show();
        }

        holder.name.setText(prodetailarray.get(listrowposition).getProductname());
        holder.sellprice.setText(getResources().getString(R.string.Rs) " " prodetailarray.get(position).getPrice());
        holder.taxid.setText(prodetailarray.get(listrowposition).getTaxid());
        holder.taxname.setText(prodetailarray.get(listrowposition).getTaxname());
        holder.taxval.setText(prodetailarray.get(listrowposition).getTaxvalue());
        holder.whole_qntty.setText(prodetailarray.get(listrowposition).getWhole_qntty());

        holder.proid.setText(prodetailarray.get(listrowposition).getProducuid());

        final String str=prodetailarray.get(listrowposition).getQntity();
        Double q = Double.parseDouble(str.replaceAll("KG", ""));

        holder.singlerowprice.setText(getResources().getString(R.string.Rs) " "   Double.parseDouble(prodetailarray.get(listrowposition).getPrice()) * q);

        drawable = mDrawableBuilder.build(String.valueOf(holder.name.getText().toString().trim().toUpperCase().charAt(0)),
                mColorGenerator.getColor((holder.name.getText().toString().trim().charAt(0))));

        holder.circularImageView.setImageDrawable(drawable);

        holder.delete.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                total_item = totalquantity-1;
                totalquantity=total_item;

                Integer index = (Integer) view.getTag();
                Log.d("indexval==","delete" index.intValue());
                prodetailarray.remove(index.intValue());
                adapter.notifyDataSetChanged();
                listView.invalidateViews();

                Log.d("listCount==","" listView.getCount());
                //  totalprice=0;
                Double add = 0.0;
                Double pr = 0.0;

               // listView.invalidateViews();
                if (listView.getCount() == 0)
                {
                    totalitem.setText("0 Items");
                    totalamount.setText( getResources().getString(R.string.Rs) " 0");
                    editor.remove("count");
                    editor.remove("price");
                    editor.commit();
                }

              Log.d("liistvisiblepos==","" (listView.getLastVisiblePosition()-listView.getFirstVisiblePosition())) ;
                for (int i = 0; i < listView.getCount(); i  )
                {

                   // this if is for  after delete item it will take first item so we dont want like this
                     if(index.intValue() != i)
                    {
                      /*  View v = listView.getChildAt(i);
                        TextView tvquan = (TextView) v.findViewById(R.id.txtquntty_prodetail);
                        TextView tvprice = (TextView) v.findViewById(R.id.txtsinglerow_price);
  

*/

                         String str = holder.qty.getText().toString().trim();
                        Double p = Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));
                        pr = pr   p;

                        totalitem.setText(""   total_item   " Items");
                        totalamount.setText(getResources().getString(R.string.Rs)   " "   pr);

                       // Log.d("listitemcount==", "tvquan=="   tvquan.getText().toString()   "add=="   add   "price"   pr   "p=="   p);
                    }
                }
            }
        });

        holder.imgplus.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                View v1=view;
                PLUSMINUS = 100;
                if(holder.qty.getText().toString().matches("[0-9] "))
                {
                  plus_qnty = Integer.parseInt(holder.qty.getText().toString());
                    Log.d("plus_qnty==","" plus_qnty);


                    //this is for check the quantity that useer enter is not more than  qntty in stock
                    Log.d("whole_qnt_plus==","" holder.whole_qntty.getText().toString());

                         whole_qnt= Integer.parseInt(holder.whole_qntty.getText().toString());
                         Log.d("whole_qnt_plus==","" whole_qnt);

                    plus_qnty = plus_qnty   1;

                    if(plus_qnty>whole_qnt)
                    {
                        Toast.makeText(getApplicationContext(), getResources().getString(R.string.outofstock), Toast.LENGTH_LONG).show();

                    }
                    else
                    {
                        prodetailarray.get(listrowposition).setQntity(String.valueOf(plus_qnty));
                        holder.qty.setText(""   plus_qnty);

                        //remove all the text except price (integer value)
                        String str=holder.sellprice.getText().toString().trim();
                        Double sell_price= Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));

                        holder.singlerowprice.setText(getResources().getString(R.string.Rs) " "   Double.parseDouble(holder.qty.getText().toString()) * sell_price);

                        prodetailarray.get(listrowposition).setQntity(String.valueOf(plus_qnty));
                        prodetailarray.get(listrowposition).setBaseprice(""   Double.parseDouble(base_price) * plus_qnty);

                    }
                /*for calculate value after change if any change*/
                Double add = 0.0;
                Double pr = 0.0;
                for (int i = 0;i < listView.getCount(); i  )
                {
                    Log.d("listviewcount==","" listView.getCount());

                    View v = listView.getAdapter().getView(i,null,null);

                    TextView tvquan = (TextView) v.findViewById(R.id.txtquntty_prodetail);
                    TextView tvprice = (TextView) v.findViewById(R.id.txtsinglerow_price);

                   // String str_qun=tvquan.getText().toString().trim();
                    String str_qun=tvquan.getText().toString().trim();

                    Log.d("listviewcount==","" str_qun);

                    Double c = Double.parseDouble(str_qun.replaceAll("KG", ""));
                    add = c   add;

                    String str = tvprice.getText().toString().trim();
                  //  String str = holder.singlerowprice.getText().toString().trim();

                    Log.d("str_qun==","" str_qun str);
                    Double p = Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));
                    pr = pr   p;

                   // Log.d("listitemcount==", "tvquan=="   tvquan.getText().toString()   "add=="   add   "price"   pr);

                    totalamount.setText(getResources().getString(R.string.Rs)  " "  pr);
                }


            }

                else {

                }
            }
        });

        holder.imgminus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PLUSMINUS = 200;




                if(holder.qty.getText().toString().matches("[0-9] "))
                {
                    minus_qnty = Integer.parseInt(holder.qty.getText().toString());



                    if (minus_qnty == 1)
                {
                    // holder.qty.setText("" );

                }
                else
                {

                    minus_qnty = minus_qnty - 1;

                    holder.qty.setText(""   minus_qnty);


                    String str=holder.sellprice.getText().toString();
                    Double sell_price= Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));

                    holder.singlerowprice.setText(getResources().getString(R.string.Rs) " "   Double.parseDouble(holder.qty.getText().toString()) * sell_price);

                    prodetailarray.get(listrowposition).setQntity(String.valueOf(minus_qnty));

                    prodetailarray.get(listrowposition).setBaseprice(""   Double.parseDouble(base_price) * minus_qnty);

                }

                /*for calculate value after change if any change*/

                Double add = 0.0;
                Double pr = 0.0;
                for (int i = 0; i <listView.getCount(); i  )
                {
                    View v = listView.getAdapter().getView(i,null,null);

                    TextView tvquan = (TextView) v.findViewById(R.id.txtquntty_prodetail);
                    TextView tvprice = (TextView) v.findViewById(R.id.txtsinglerow_price);

                    String str_qun=tvquan.getText().toString().trim();
                    Double c = Double.parseDouble(str_qun.replaceAll("KG", ""));
                    add = c   add;

                    String str = tvprice.getText().toString().trim();
                    Double p = Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));
                    pr = pr   p;


                //    Log.d("listitemcount==", "tvquan=="   tvquan.getText().toString()   "add=="   add   "price"   pr);


                    totalamount.setText(getResources().getString(R.string.Rs)  " "  pr);
                }

            }
                else
                {

                }
            }
        });

        if(!prodetailarray.get(listrowposition).getQntity().matches("[0-9] "))
        {
        holder.qty.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                final Integer index = (Integer) view.getTag();
                Log.d("indexval==","index===" index);

                final Dialog dialog_item = new Dialog(Bill_details.this);

                dialog_item.setContentView(R.layout.add_item_dialog);
                dialog_item.getWindow().setLayout(AppBarLayout.LayoutParams.FILL_PARENT, AppBarLayout.LayoutParams.WRAP_CONTENT);

                final EditText edt_enter_qntty = (EditText) dialog_item.findViewById(R.id.txtqntty_item_dialog);
                TextView ok = (TextView) dialog_item.findViewById(R.id.txtok_item_dialog);
                ok.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View view)
                    {
                        if(edt_enter_qntty.getText().toString().equals(""))
                        {

                        }
                        else
                        {
                            Double dialog_qntty= Double.parseDouble(edt_enter_qntty.getText().toString());

                          //  PLUSMINUS = 100;
                            kg_qntty =  dialog_qntty;

                            //this is for checking entered qunnt is not more than avail qntty
                                String whole_qnt=holder.whole_qntty.getText().toString();
                                String whole_qnt_replce= (whole_qnt.replaceAll("KG", ""));
                                whole_qnt_kg= Double.parseDouble(whole_qnt_replce);
                                Log.d("whole_qnt_kg==","" whole_qnt_kg);
                            if(kg_qntty>whole_qnt_kg)
                            {
                                Toast.makeText(getApplicationContext(), getResources().getString(R.string.outofstock), Toast.LENGTH_LONG).show();

                            }
                            else
                            {
                            prodetailarray.get(listrowposition).setQntity(String.valueOf(kg_qntty));
                            holder.qty.setText(""   kg_qntty "KG");
                                //remove all the text except price (integer value)
                                String str_qnty=holder.qty.getText().toString();
                                Double qty= Double.parseDouble(str_qnty.replaceAll("KG", ""));

                                String str=holder.sellprice.getText().toString();
                                Double sell_price= Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));

                                holder.singlerowprice.setText(getResources().getString(R.string.Rs) " "   qty * sell_price);

                                prodetailarray.get(listrowposition).setQntity(String.valueOf(kg_qntty));
                                prodetailarray.get(listrowposition).setBaseprice(""   Double.parseDouble(base_price) * kg_qntty);


                            }


                                 /*for calculate value after change if any change*/
                            Double add = 0.0;
                            Double pr = 0.0;

                            for (int i = 0;i <listView.getCount(); i  )
                            {

                                View v = listView.getAdapter().getView(i,null,null);
                                TextView tvquan = (TextView) v.findViewById(R.id.txtquntty_prodetail);
                                TextView tvprice = (TextView) v.findViewById(R.id.txtsinglerow_price);

                                String str_quan=tvquan.getText().toString().trim();

                                Log.d("strqn",str_quan);

                                String c = (str_quan.replaceAll("KG", ""));
                                Log.d("strqn", ""   c);
                                add = Double.parseDouble(c)   add;

                                String str_pri=tvprice.getText().toString().trim();
                                Double p= Double.parseDouble(str_pri.replaceAll(getResources().getString(R.string.Rs), ""));
                                pr = pr   p;

                                Log.d("total_qntty", "tvquan=="   tvquan.getText().toString()   "add=="   add   "price"   pr);

                                //  totalitem.setText(""   add " Items");
                                totalamount.setText(getResources().getString(R.string.Rs)  " "  pr);


                            }

                        }
                        dialog_item.dismiss();
                    }
                });
                dialog_item.show();


            }
        });
        }
        return convertView;
    }

    @Override
    public int getViewTypeCount() {

        return getCount();
    }

    @Override
    public int getItemViewType(int position) {

        return position;
    }
}
  

Ответ №1:

Никогда не обновляйте представление элемента в списке из обработчика событий (контроллера).

Похоже, что вы правильно обновляете модель ( prodetailarray ), но в onClick или любом другом обработчике событий все, что вы хотите сделать, это обновить модель, а затем вызвать notifyDataSetChanged() . Это сообщит вашему представлению списка, что модель изменилась, и представление списка восстановит представления элементов на основе новых данных модели.

Если этого недостаточно для решения вашей проблемы, вам нужно опубликовать весь код вашего адаптера, чтобы мы могли определить проблему.

Комментарии:

1. я заранее загрузил весь свой класс адаптера, пожалуйста, chk .thanx

Ответ №2:

// смотрите ниже метод getview, который я обновил.

общедоступный просмотр getView (конечная позиция int, просмотр convertView, родительская группа ViewGroup)

     {
         listrowposition = position;

        final ViewHolder holder;

        if (convertView == null)
        {
            LayoutInflater inflater = getLayoutInflater();
            convertView = inflater.inflate(R.layout.singlerowbill_detail, null);
            holder = new ViewHolder();

            holder.name = (TextView) convertView.findViewById(R.id.txtproname_prodetail);
            holder.sellprice = (TextView) convertView.findViewById(R.id.txtprice_prodetail);
            holder.proid = (TextView) convertView.findViewById(R.id.txtproid_prodetail);

            holder.qty = (TextView) convertView.findViewById(R.id.txtquntty_prodetail);

            holder.imgplus = (ImageView) convertView.findViewById(R.id.imgplus_prodetail);
            holder.imgminus = (ImageView) convertView.findViewById(R.id.imgminus_prodetail);
            holder.singlerowprice = (TextView) convertView.findViewById(R.id.txtsinglerow_price);
            holder.baseprice = (TextView) convertView.findViewById(R.id.txt_base_price_prodetail);

            holder.taxid = (TextView) convertView.findViewById(R.id.txt_taxid_prodetail);
            holder.taxname = (TextView) convertView.findViewById(R.id.txt_taxname_prodetail);
            holder.taxval = (TextView) convertView.findViewById(R.id.txt_taxval_prodetail);

            // holder.singlerowprice.addTextChangedListener(new MytextWatcher(convertView));

            holder.delete = (ImageView) convertView.findViewById(R.id.txtdeleterow);
            holder.txtkg = (TextView) convertView.findViewById(R.id.txtkg);
            holder.whole_qntty = (TextView) convertView.findViewById(R.id.txt_whole_qntty_prodetail);


            holder.circularImageView = (CircularImageView) convertView.findViewById(R.id.productImage_billdetail);
            holder.linearLayout = (LinearLayout) convertView.findViewById(R.id.linearkg);


            holder.name.setTypeface(light);
            holder.singlerowprice.setTypeface(light);
            holder.baseprice.setTypeface(light);
            holder.qty.setTypeface(light);
            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolder) convertView.getTag();
        }

        base_price =        prodetailarray.get(listrowposition).getBaseprice();
        holder.qty.setTag(listrowposition);
        holder.delete.setTag(listrowposition);
        holder.imgplus.setTag(listrowposition);
        holder.imgminus.setTag(listrowposition);

        Log.d("baseprice==", "***"   base_price);
        holder.baseprice.setText(prodetailarray.get(listrowposition).getBaseprice());


        //this means if qnty contain only number means add as unit otherwise add as kg
        if(prodetailarray.get(listrowposition).getQntity().matches("[0-9] "))
        {
            holder.qty.setText(prodetailarray.get(listrowposition).getQntity());
            //
            holder.imgplus.setVisibility(View.VISIBLE);
            holder.imgminus.setVisibility(View.VISIBLE);
           //
            Log.d("qntty_kg??","" prodetailarray.get(listrowposition).getQntity());
        }
        else
        {
            holder.imgplus.setVisibility(View.GONE);
            holder.imgminus.setVisibility(View.GONE);
          //
            holder.qty.setText("" prodetailarray.get(listrowposition).getQntity());

            Log.d("qntty_kg==","" prodetailarray.get(listrowposition).getQntity());
        }

        holder.name.setText(prodetailarray.get(listrowposition).getProductname());
        holder.sellprice.setText(getResources().getString(R.string.Rs) " " prodetailarray.get(listrowposition).getPrice());
        holder.taxid.setText(prodetailarray.get(listrowposition).getTaxid());
        holder.taxname.setText(prodetailarray.get(listrowposition).getTaxname());
        holder.taxval.setText(prodetailarray.get(listrowposition).getTaxvalue());
        holder.whole_qntty.setText(prodetailarray.get(listrowposition).getWhole_qntty());

        holder.proid.setText(prodetailarray.get(listrowposition).getProducuid());

        final String str=prodetailarray.get(listrowposition).getQntity();
        Double q = Double.parseDouble(str.replaceAll("KG", ""));

        holder.singlerowprice.setText(getResources().getString(R.string.Rs) " "   Double.parseDouble(prodetailarray.get(listrowposition).getPrice()) * q);

        drawable = mDrawableBuilder.build(String.valueOf(holder.name.getText().toString().trim().toUpperCase().charAt(0)),
                mColorGenerator.getColor((holder.name.getText().toString().trim().charAt(0))));

        holder.circularImageView.setImageDrawable(drawable);

        holder.delete.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                total_item = totalquantity-1;
                totalquantity=total_item;

                Integer index = (Integer) view.getTag();
                Log.d("indexval==","delete" index.intValue());
                prodetailarray.remove(index.intValue());

                adapter.notifyDataSetChanged();
                listView.invalidateViews();

                Log.d("listCount==","" listView.getCount());
                Double add = 0.0;
                Double pr = 0.0;

                if (listView.getCount() == 0)
                {
                    totalitem.setText("0 Items");
                    totalamount.setText( getResources().getString(R.string.Rs) " 0");
                    editor.remove("count");
                    editor.remove("price");
                    editor.commit();
                }

                for (int i = 0; i < listView.getCount(); i  )
                {
                   // this if is for  after delete item it will take first item so we dont want like this

                        View v = listView.getAdapter().getView(i,null,listView);
                        if(v==null)
                        {
                            return;
                        }
                        TextView tvquan = (TextView) v.findViewById(R.id.txtquntty_prodetail);
                        TextView tvprice = (TextView) v.findViewById(R.id.txtsinglerow_price);

                        String str_qun=tvquan.getText().toString().trim();
                        Double c = Double.parseDouble(str_qun.replaceAll("KG", ""));
                        add = c   add;

                        String str = tvprice.getText().toString().trim();
                        Double p = Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));
                        pr = pr   p;

                        totalitem.setText(""   total_item   " Items");
                        totalamount.setText(getResources().getString(R.string.Rs)   " "   pr);

                        Log.d("listitemcount==", "tvquan=="   tvquan.getText().toString()   "add=="   add   "price"   pr   "p=="   p);

                }
            }
        });

        holder.imgplus.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
               int in=(Integer) view.getTag();

                PLUSMINUS = 100;
                if(holder.qty.getText().toString().matches("[0-9] "))
                {
                  plus_qnty = Integer.parseInt(holder.qty.getText().toString());
                    Log.d("plus_qnty==","" plus_qnty);

                    //this is for check the quantity that useer enter is not more than  qntty in stock
                    Log.d("whole_qnt_plus==","" holder.whole_qntty.getText().toString());

                         whole_qnt= Integer.parseInt(holder.whole_qntty.getText().toString());
                         Log.d("whole_qnt_plus==","" whole_qnt);

                    plus_qnty = plus_qnty   1;

                    if(plus_qnty>whole_qnt)
                    {
                        Toast.makeText(getApplicationContext(), getResources().getString(R.string.outofstock), Toast.LENGTH_LONG).show();

                    }
                    else
                    {
                        for(int i=0;i<prodetailarray.size();i  ){
                            Log.d("proarr==","getQntity==" "" prodetailarray.get(i).getQntity() "baseprice==" prodetailarray.get(i).getBaseprice());
                        }

                        holder.qty.setText(""   plus_qnty);

                        //remove all the text except price (integer value)
                        String str=holder.sellprice.getText().toString().trim();
                        Double sell_price= Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));

                        holder.singlerowprice.setText(getResources().getString(R.string.Rs) " "   Double.parseDouble(holder.qty.getText().toString()) * sell_price);
  

Bills_Activity.productlistarray.set(позиция,);

                         prodetailarray.get(in).setQntity(String.valueOf(plus_qnty));
                        prodetailarray.get(in).setBaseprice(""   Double.parseDouble(base_price) * plus_qnty);


                        for(int i=0;i<prodetailarray.size();i  )
                        {
                            Log.d("proarr=="," after_getQntity==" "" prodetailarray.get(i).getQntity() "baseprice==" prodetailarray.get(i).getBaseprice());
                        }
                    }

                /*for calculate value after change if any change*/
                Double add = 0.0;
                Double pr = 0.0;
                for (int i = 0;i <listView.getCount(); i  )
                {
                    View v = listView.getAdapter().getView(i,null,listView);
                    if(v==null)
                    {
                        return;
                    }
                    TextView tvquan = (TextView) v.findViewById(R.id.txtquntty_prodetail);
                    TextView tvprice = (TextView) v.findViewById(R.id.txtsinglerow_price);

                    String str_qun=tvquan.getText().toString().trim();
                    Double c = Double.parseDouble(str_qun.replaceAll("KG", ""));
                    add = c   add;

                    String str = tvprice.getText().toString().trim();
                    Double p = Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));
                    pr = pr   p;


                    Log.d("listitemcount==", "tvquan=="   tvquan.getText().toString()   "add=="   add   "price"   pr);
                                 totalamount.setText(getResources().getString(R.string.Rs)  " "  pr);

                }

            }

                else
                {

                }
            }
        });

        holder.imgminus.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PLUSMINUS = 200;
                int in=(Integer) view.getTag();
                if(holder.qty.getText().toString().matches("[0-9] "))
                {
                    minus_qnty = Integer.parseInt(holder.qty.getText().toString());

                    if (minus_qnty == 1)
                {


                }
                else
                {

                    minus_qnty = minus_qnty - 1;

                    holder.qty.setText(""   minus_qnty);


                    String str=holder.sellprice.getText().toString();
                    Double sell_price= Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));

                    holder.singlerowprice.setText(getResources().getString(R.string.Rs) " "   Double.parseDouble(holder.qty.getText().toString()) * sell_price);

                    prodetailarray.get(in).setQntity(String.valueOf(minus_qnty));

                    prodetailarray.get(in).setBaseprice(""   Double.parseDouble(base_price) * minus_qnty);

                }

                /*for calculate value after change if any change*/

                Double add = 0.0;
                Double pr = 0.0;
                for (int i = 0; i < listView.getCount(); i  )
                {
                    View v = listView.getAdapter().getView(i,null,listView);
                    if(v==null)
                    {
                        return;
                    }
                    TextView tvquan = (TextView) v.findViewById(R.id.txtquntty_prodetail);
                    TextView tvprice = (TextView) v.findViewById(R.id.txtsinglerow_price);
                    String str_qun=tvquan.getText().toString().trim();
                    Double c = Double.parseDouble(str_qun.replaceAll("KG", ""));
                    add = c   add;


                    String str = tvprice.getText().toString().trim();
                    Double p = Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));
                    pr = pr   p;


                    Log.d("listitemcount==", "tvquan=="   tvquan.getText().toString()   "add=="   add   "price"   pr);

                    totalamount.setText(getResources().getString(R.string.Rs)  " "  pr);
                   // totalamount.setText(""  pr);
                }
            }
                else
                {

                }
            }
        });

        if(!prodetailarray.get(listrowposition).getQntity().matches("[0-9] "))
        {
        holder.qty.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View view)
            {
                  index = (Integer) view.getTag();
                Log.d("indexval==","index===" index);

                final Dialog dialog_item = new Dialog(Bill_details.this);

                dialog_item.setContentView(R.layout.add_item_dialog);
                dialog_item.getWindow().setLayout(AppBarLayout.LayoutParams.FILL_PARENT, AppBarLayout.LayoutParams.WRAP_CONTENT);

                  edt_enter_qntty = (EditText) dialog_item.findViewById(R.id.txtqntty_item_dialog);

                TextView ok = (TextView) dialog_item.findViewById(R.id.txtok_item_dialog);
                ok.setOnClickListener(new View.OnClickListener()
                {
                    @Override
                    public void onClick(View view)
                    {
                        if(edt_enter_qntty.getText().toString().equals(""))
                        {

                        }
                        else
                        {
                            Double dialog_qntty= Double.parseDouble(edt_enter_qntty.getText().toString());

                          //  PLUSMINUS = 100;
                            kg_qntty =  dialog_qntty;
                            //this is for checking entered qunnt is not more than avail qntty
                                String whole_qnt=holder.whole_qntty.getText().toString();
                                String whole_qnt_replce= (whole_qnt.replaceAll("KG", ""));
                                whole_qnt_kg= Double.parseDouble(whole_qnt_replce);
                                Log.d("whole_qnt_kg==","" whole_qnt_kg);
                            if(kg_qntty>whole_qnt_kg)
                            {
                                Toast.makeText(getApplicationContext(), getResources().getString(R.string.outofstock), Toast.LENGTH_LONG).show();

                            }
                            else
                            {
                                holder.qty.setText(""   kg_qntty "KG");
                                prodetailarray.get(index).setQntity(String.valueOf(kg_qntty));
                                //remove all the text except price (integer value)
                                String str_qnty=prodetailarray.get(index).getQntity().toString();

                                Double qty= Double.parseDouble(str_qnty.replaceAll("KG", ""));

                                String str=holder.sellprice.getText().toString();
                                Double sell_price= Double.parseDouble(str.replaceAll(getResources().getString(R.string.Rs), ""));

                                Log.d("qty * sell_price==","" qty " " sell_price);

                                holder.singlerowprice.setText(getResources().getString(R.string.Rs) " "   qty * sell_price);

                                prodetailarray.get(index).setBaseprice(""   Double.parseDouble(base_price) * kg_qntty);
                            }

                                 /*for calculate value after change if any change*/
                            Double add = 0.0;
                            Double pr = 0.0;

                            for (int i = 0;i < listView.getCount(); i  )
                            {

                                View v = listView.getAdapter().getView(i,null,listView);
                                if(v==null)
                                {
                                    return;
                                }
                                    TextView tvquan = (TextView) v.findViewById(R.id.txtquntty_prodetail);
                                    TextView tvprice = (TextView) v.findViewById(R.id.txtsinglerow_price);

                                    String str_quan=tvquan.getText().toString().trim();

                                    Log.d("strqn",str_quan);

                                    String c = (str_quan.replaceAll("KG", ""));
                                    Log.d("strqn", ""   c);
                                    add = Double.parseDouble(c)   add;

                                    String str_pri=tvprice.getText().toString().trim();
                                    Double p= Double.parseDouble(str_pri.replaceAll(getResources().getString(R.string.Rs), ""));
                                    pr = pr   p;

                                    Log.d("total_qntty", "tvquan=="   tvquan.getText().toString()   "add=="   add   "price"   pr);

                                  //  totalitem.setText(""   add " Items");
                                    totalamount.setText(getResources().getString(R.string.Rs)  " "  pr);


                            }

                        }
                        dialog_item.dismiss();
                    }
                });
                dialog_item.show();


            }
        });
        }
        return convertView;
    }