2016-10-21 5 views
0

//値を増減した後に数量を増減させる2つのボタンがあります。各行の価格を計算したいが、正しい値を与えていません。数量はスクロール中に変更されます。上記の問題は、リストビューのサイズが画面サイズ以上の場合に発生します。ListViewの各行から適切な値を計算することができません

パブリッククラスBaseddapterはBaseAdapter 延び{ @Override公共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; 
    } 
} 

答えて

0

//私が更新した下記の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; 
    } 
0

イベントハンドラ(コントローラ)から、リスト内の項目のビューを更新しないでください。

あなたは正しくモデル(prodetailarray)を更新しているように見えますが、onClickまたは任意のイベントハンドラでは、あなたがしたいすべてのモデルを更新してからnotifyDataSetChanged()を呼んでいます。これにより、モデルが変更されたことがリストビューに通知され、リストビューは新しいモデルデータに基づいてアイテムビューを再生成します。

これで問題を解決するには不十分な場合は、問題を特定できるようにアダプタコード全体を送信する必要があります。

+0

私はアダプタークラスplz chk .thanxを前もってアップロードしています – gautam

関連する問題