user3881024 user3881024 - 1 month ago 10
Android Question

Unable to calculate proper value from each row in ListView

// i have two button for increasing and decreasing the quantity, after increasing or decreasing the value i want to calculate price from each row but it is not giving correct value.Also the quantity getting changed while scrolling .Mostly the above said problem occurs whenever the size of listview is more than screen size.

public class Baseddapter extends BaseAdapter
{
@Override
public int getCount()
{
return 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;
}
}

Answer

//see below getview method which I updated .

public View getView(final 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.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(position,);

                        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;
    }