列表在删除所有项目后返回项目。

huangapple 未分类评论51阅读模式
英文:

List is returning item after deleting all the items

问题

public class CartAdapter extends RecyclerView.Adapter<CartAdapter.Viewholder> {

    // ... (code for other parts of the adapter)

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

    @Override
    public void onBindViewHolder(@NonNull final Viewholder holder, final int position) {
        // ... (code for binding data to the ViewHolder)

        holder.btn_delete.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // ... (code for deleting items from the cart)
            }
        });

        holder.btn_update.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // ... (code for updating cart items)
            }
        });

        holder.adapter_livestock.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // ... (code for handling livestock click)
            }
        });
    }

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

    class Viewholder extends RecyclerView.ViewHolder {
        // ... (ViewHolder constructor and other view references)

        public Viewholder(@NonNull View itemView) {
            super(itemView);
            // ... (initialize views)
        }

        private void setItemDetails(String namee, String manufacturere, String availabilitye, String e_parte,
                                    String m_parte, String floatprice, String int_quantity, String float_line_total) {
            // ... (set item details to views)
        }
    }
}
public class CartActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener {

    // ... (other member variables)

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_cart);

        // ... (initialize views and other variables)

        ArrayAdapter<String> customSpinnerAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, names);
        cart_country.setOnItemSelectedListener(this);
        cart_country.setAdapter(customSpinnerAdapter);

        // ... (code for setting up RecyclerView and calculating total)

        check_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // ... (code for handling checkout button click)
            }
        });
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        // ... (code for handling spinner item selection)
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
        // ... (code for handling nothing selected)
    }

    private void sendAndRequestResponse() {
        // ... (code for making network request)
    }

    private void totalCounter() {
        // ... (code for calculating and displaying total)
    }
}

Please note that I've removed the code inside the onClick listeners and other parts for brevity, but you should keep the actual functionality intact when implementing this in your project. Make sure to replace the placeholders like // ... (code for ...) with the actual code that you had there.

英文:

My List is returning an item after clearing all the items by deleting ,On app fresh install its returing null which is good but after adding item and then by deleting all, this happens when go back from that activity and come again, list.size() is returning 1 and an item is remaing ,i don't know if it is loading from cache object instance here is my code of adapter class

public static  double p = 0;
private List&lt;CartModel&gt; cartModelList;
Database db;
Context context;

public CartAdapter(Context context, List&lt;CartModel&gt; cartModelList) {
    this.cartModelList = cartModelList;
    this.context = context;
    db = new Database(context);
}

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

@Override
public void onBindViewHolder(@NonNull final Viewholder holder, final int position) {


    String namee = cartModelList.get(position).getName();
    String manufacturere = cartModelList.get(position).getManufacturer();
    String availabilitye = cartModelList.get(position).getAvailability();
    String e_parte = cartModelList.get(position).getE_part();
    String m_parte = cartModelList.get(position).getM_part();
    String floatprice = cartModelList.get(position).getUnit_();
    String int_quantity = cartModelList.get(position).getQuantity();
    String float_line_total = cartModelList.get(position).getLine_total();



    holder.setItemDetails(namee, manufacturere, availabilitye, e_parte, m_parte, floatprice, int_quantity, float_line_total);


    int  checker = SharedPrefManager.getInstance(context).cartcount().getCounter();

    if (checker &lt;= 0){

        cartModelList.clear();

    }

    holder.btn_delete.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if (db.deleteProduct(cartModelList.get(position).getID())) {


                if (cartModelList.size() == 1){
                  cartModelList.clear();


                }else {
                    cartModelList.remove(position);
                    notifyDataSetChanged();

                }

                Toast.makeText(context, &quot;Product  deleted from cart&quot;, Toast.LENGTH_LONG).show();



            } else {

                Toast.makeText(context, &quot;Product not deleted from cart&quot;, Toast.LENGTH_LONG).show();

            }

            CartList user111 = new CartList(--COUNTER_BADGE);

            //  Toast.makeText(context, &quot;else&quot;, Toast.LENGTH_SHORT).show();
            SharedPrefManager.getInstance(context).cartList(user111);
            ((Activity)context).invalidateOptionsMenu();
            ((Activity)context).finish();
            Intent intent = new Intent(context, CartActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
            context.startActivity(intent);

        }



    });

    holder.btn_update.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String q = holder.quantity.getText().toString();


            if(q.isEmpty()){
                holder.quantity.setError(&quot;Required Field&quot;);
                holder.quantity.requestFocus();


            }else {

                double q2 = Double.parseDouble(q);
                int avail = Integer.parseInt( cartModelList.get(position).getAvailability());
                int qty = Integer.parseInt(q);

                if (qty &gt; avail ){
                    Toast toast= Toast.makeText( (context),
                            &quot;Quantity must be less than the products Available&quot;, Toast.LENGTH_SHORT);
                    toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                    toast.show();


                } else{
                    Toast.makeText(context, &quot;&quot;+cartModelList.get(position).getManufacturer(), Toast.LENGTH_SHORT).show();

                    String url = BASE_URL+&quot;api/product/single_product?pnum=&quot;+cartModelList.get(position).getE_part();
                    RequestQueue mRequestQueue = Volley.newRequestQueue(context);


                    //String Request initialized
                    StringRequest mStringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener&lt;String&gt;() {
                        @Override
                        public void onResponse(String response) {

                            try {

                                JSONObject result = new JSONObject(response);
                                JSONObject products = result.getJSONObject(&quot;single_product&quot;);

                                final JSONArray Price = products.getJSONArray(&quot;price_range&quot;);


                                for (int i = 0; i &lt; Price.length(); i++) {

                                    JSONObject attributes = null;
                                    try {
                                        attributes = Price.getJSONObject(i);


                                        try {
                                            int a = Math.abs(Integer.parseInt(attributes.getString(&quot;to&quot;)));
                                            int b = Integer.parseInt(attributes.getString(&quot;from&quot;));


                                            if (qty &gt;= b ) {


                                                p = Double.parseDouble(attributes.getString(&quot;price&quot;));


                                                String pricee = String.valueOf(p);

                                                holder.price.setText(&quot;&#163;&quot;+pricee);


                                                double linetotal6 = qty * p;
                                                DecimalFormat df2 = new DecimalFormat(&quot;#.##&quot;);

                                                String roundoff = df2.format(linetotal6);
                                                holder.linetotal.setText(&quot;&#163;&quot;+roundoff);


                                            }
                                        } catch (NumberFormatException nfe) {
                                            // Toast.makeText(ProductDescription.this, &quot;Not a number&quot;, Toast.LENGTH_SHORT).show();
                                        }



                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }


                                }






                            } catch (Exception e) {
                                Toast.makeText(context, e.toString(), Toast.LENGTH_LONG).show();
                                Log.d(TAG, &quot;onResponse: &quot;+e);
                            }



                            holder.progressbar.setVisibility(View.GONE);

                        }
                    }, new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {

                            Log.i(TAG, &quot;Error :&quot; + error.toString());

                            holder.progressbar.setVisibility(View.GONE);

                        }
                    }) {
                        @Override
                        public String getBodyContentType() {
                            return &quot;application/json&quot;;
                        }

                        @Override
                        public Map&lt;String, String&gt; getHeaders() throws AuthFailureError {
                            HashMap&lt;String, String&gt; headers = new HashMap&lt;String, String&gt;();
                            headers.put(&quot;Authorization&quot;, BASE_Token);
                            return headers;
                        }


                    };


                    mStringRequest.setRetryPolicy(new DefaultRetryPolicy(
                            90000,
                            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

                    mRequestQueue.add(mStringRequest);
                    holder.progressbar.setVisibility(View.VISIBLE);


                    ContentValues values = new ContentValues();
                    values.put(Database.Quantity,q);
                    values.put(Database.Line_total,q2 * p);
                    values.put(Database.Unit_price, p);
                    if(db.updateProduct(cartModelList.get(position).getID(),values)){
                        Toast.makeText(context, &quot;Product updated cart&quot;, Toast.LENGTH_LONG).show();
                    }else{
                        Toast.makeText(context, &quot;Product not updated from cart&quot;, Toast.LENGTH_LONG).show();
                    }


                    ((Activity)context).finish();
                    Intent intent = new Intent(context, CartActivity.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
                    context.startActivity(intent);


                }

            }
        }
    });



    holder.adapter_livestock.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {


            String url = BASE_URL+&quot;api/product/check_availability?data_id=&quot;+cartModelList.get(position).getE_part();//+forgot_code;

            RequestQueue requestQueue = Volley.newRequestQueue(context);


            StringRequest stringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener&lt;String&gt;() {
                @Override
                public void onResponse(String response) {


                    try {
                        //converting response to json object
                        JSONObject obj = new JSONObject(response);

                        String status = obj.getString(&quot;status&quot;);



                        if (status.equals(&quot;ERROR&quot;)) {


                            Toast.makeText(context, status+&quot;&quot;+obj, Toast.LENGTH_LONG).show();


                        } else {

                            String livechecker = obj.getString(&quot;total_stock&quot;);
                        /*  //  cart_value.setText(livechecker + &quot; \nIn stock&quot;);
                            cartModelList.get(position).getAvailability();*/

                            holder.availability.setText(livechecker);

                        }


                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                    holder.progressbar.setVisibility(View.GONE);
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e(&quot;VOLLEY&quot;, error.toString());
                    holder.progressbar.setVisibility(View.GONE);
                }
            }) {


                //This is for Headers If You Needed
                @Override
                public Map&lt;String, String&gt; getHeaders() throws AuthFailureError {
                    Map&lt;String, String&gt; params = new HashMap&lt;String, String&gt;();
                    params.put(&quot;Authorization&quot;, BASE_Token);
                    params.put(&quot;Content-Type&quot;, &quot;application/json; charset=UTF-8&quot;);

                    return params;
                }


            };

            requestQueue.add(stringRequest);
            holder.progressbar.setVisibility(View.VISIBLE);


        }
    });




}

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

class Viewholder extends RecyclerView.ViewHolder {

    private TextView name;
    private TextView manufacturer;
    private TextView availability;
    private TextView e_part;
    private TextView m_part;
    private TextView price;
    private EditText quantity;
    private TextView linetotal;
    private Button btn_delete;
    private Button btn_update;
    private  Button adapter_livestock;
    public  SpinKitView progressbar;

    public Viewholder(@NonNull View itemView) {
        super(itemView);

        name = itemView.findViewById(R.id.name);
        manufacturer = itemView.findViewById(R.id.manufacturer);
        availability = itemView.findViewById(R.id.availability);
        e_part = itemView.findViewById(R.id.e_part);
        m_part = itemView.findViewById(R.id.m_part);
        price = itemView.findViewById(R.id.price);
        quantity = itemView.findViewById(R.id.quantity);
        linetotal = itemView.findViewById(R.id.linetotal);
        btn_delete = itemView.findViewById(R.id.btn_delete);
        btn_update = itemView.findViewById(R.id.btn_update);
        adapter_livestock = itemView.findViewById(R.id.adapter_livestock);
        progressbar = itemView.findViewById(R.id.adapterrprogresslivestockprogress);

    }


    private void setItemDetails(String namee, String manufacturere, String availabilitye, String e_parte, String m_parte, String floatprice, String int_quantity, String float_line_total) {

        name.setText(namee);
        manufacturer.setText(manufacturere);
        availability.setText(availabilitye);
        e_part.setText(e_parte);
        m_part.setText(m_parte);
        price.setText(&quot;&#163;&quot;+floatprice);
        quantity.setText(int_quantity);
        linetotal.setText(&quot;&#163;&quot;+float_line_total);


    }


}

}
this is my cart activity

Database db;
TextView subtotal, total;
private double mSubTotal = 0;
Button check_button;
Spinner cart_country;

String countryitemidsss;
String itemcountriesss;

ArrayList&lt;String&gt; names = new ArrayList&lt;&gt;();
ArrayList&lt;String&gt; ids = new ArrayList&lt;&gt;();

SpinKitView cartProgressBar;
TextView cart_shipping1, cart_vat1;
String cart_shipping11, cart_vat11;

double myshiping = 0;
double myvat = 0;

private RequestQueue mRequestQueue;
private StringRequest mStringRequest;
public static String subtoalvalue;




public static final String EXTRA_SUBTOTAL = &quot;subtotal&quot;;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FrameLayout contentFrameLayout = findViewById(R.id.nav_host_fragment); //Remember this is the FrameLayout area within your activity_main.xml
    getLayoutInflater().inflate(R.layout.activity_cart, contentFrameLayout);


    subtotal = findViewById(R.id.subtotal);
    total = findViewById(R.id.total);
    check_button = findViewById(R.id.checkout_securely);

    cart_country = findViewById(R.id.cart_country);

    cartProgressBar = findViewById(R.id.cartProgressBar);

    cart_shipping1 = findViewById(R.id.cart_shiping);
    cart_vat1 = findViewById(R.id.cart_vat);

    db = new Database(this);


    ArrayAdapter&lt;String&gt; customSpinnerAdapter = new ArrayAdapter&lt;String&gt;(this, android.R.layout.simple_list_item_1, names);
    cart_country.setOnItemSelectedListener(this);
    cart_country.setAdapter(customSpinnerAdapter);


    db = new Database(this);

    recyclerView = findViewById(R.id.cart_recycler);

    LinearLayoutManager layoutManager = new LinearLayoutManager(this);
    layoutManager.setOrientation(RecyclerView.VERTICAL);
    recyclerView.setLayoutManager(layoutManager);

    List&lt;CartModel&gt; cartModelList = new ArrayList&lt;&gt;();

    cartModelList = db.getCarts();

    for (int i = 0; i &lt; cartModelList.size(); i++) {
        for (int j = i + 1; j &lt; cartModelList.size(); j++) {
            if (cartModelList.get(i).getE_part().equals(cartModelList.get(j).getE_part())) {
                cartModelList.get(i).setM_part(cartModelList.get(j).getM_part());
                cartModelList.get(i).setName(cartModelList.get(j).getName());
                cartModelList.get(i).setQuantity(cartModelList.get(i).getQuantity());
                cartModelList.remove(j);
                j--;
                Log.d(&quot;remove&quot;, String.valueOf(cartModelList.size()));

            }
        }

    }

    for (int i = 0; i &lt; cartModelList.size(); i++) {
        mSubTotal = mSubTotal + Double.parseDouble(cartModelList.get(i).getLine_total());


    }

    int counter33 = SharedPrefManager.getInstance(this).cartcount().getCounter();


    if(counter33 &lt;= 0){

        LinearLayout caritemTrue = findViewById(R.id.cartItemTrue);

        caritemTrue.setVisibility(View.GONE);


    }
    else
        {

        LinearLayout cartitemempty = findViewById(R.id.cartItemEmpty);
        cartitemempty.setVisibility(View.GONE);
    }



    subtoalvalue = String.format(&quot;%.2f&quot;, mSubTotal);

    // Toast.makeText(this, subtoalvalue, Toast.LENGTH_SHORT).show();

    subtotal.setText(&quot;&#163;&quot;+subtoalvalue);

    //  mSubTotal = mSubTotal;


    total.setText(String.valueOf(mSubTotal));

    CartAdapter cartAdapter = new CartAdapter(this, cartModelList);
    recyclerView.setAdapter(cartAdapter);


    check_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (SharedPrefManager.getInstance(getApplicationContext()).isLoggedIn()) {

                Intent intent3 = new Intent(getApplicationContext(), Checkout.class);
                intent3.putExtra(EXTRA_SUBTOTAL, subtoalvalue);
                startActivity(intent3);



            } else {


                Intent intent = new Intent(getApplicationContext(), CheckOutRegistration.class);
                startActivity(intent);


            }

        }
    });

    if (cartModelList.size() == 0) {

        db.cleanCart();


    }

}


@Override
public void onItemSelected(AdapterView&lt;?&gt; parent, View view, int position, long id) {

    // On selecting a spinner item


    countryitemidsss = ids.get(cart_country.getSelectedItemPosition());

    // Toast.makeText(getApplicationContext(), ids.get(spinner.getSelectedItemPosition()), Toast.LENGTH_LONG).show();

    itemcountriesss = parent.getItemAtPosition(position).toString();


    sendAndRequestResponse();

    //Toast.makeText(getApplicationContext(), itemcountries, Toast.LENGTH_LONG).show();

}

@Override
public void onNothingSelected(AdapterView&lt;?&gt; parent) {

}


private void sendAndRequestResponse() {


    String url = BASE_URL+&quot;api/customers/getvat?user_id=693&amp;login=0&amp;country=&quot; + countryitemidsss + &quot;&amp;buying_as_company=1&quot;;

    //RequestQueue initialized
    mRequestQueue = Volley.newRequestQueue(this);


    //String Request initialized
    mStringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener&lt;String&gt;() {
        @Override
        public void onResponse(String response) {

            try {
                JSONObject result = new JSONObject(response);

                String status = result.getString(&quot;status&quot;);


                JSONObject businessObject = result.getJSONObject(&quot;data&quot;);
                cart_shipping11 = businessObject.getString(&quot;vat&quot;);
                cart_vat11 = businessObject.getString(&quot;shipping_charges&quot;);



                  shippping = data.getString(&quot;shipping_charges&quot;);
                    vaaat = data.getString(&quot;vat&quot;);*/


                cart_shipping1.setText(&quot;&#163;&quot;+cart_shipping11);
                cart_vat1.setText(&quot;&#163;&quot;+cart_vat11);

                myshiping = Double.parseDouble(cart_shipping11);
                myvat = Double.parseDouble(cart_vat11);
                totalCounter();

                // Toast.makeText(CartActivity.this,&quot;&quot;+ myshiping+myvat, Toast.LENGTH_SHORT).show();



                try {


                    myshiping = Float.parseFloat(cart_shipping11);
                    myvat = Float.parseFloat(cart_vat11);
                } catch(NumberFormatException nfe) {

                    Toast.makeText(CartActivity.this, &quot;Could not parse &quot; + nfe, Toast.LENGTH_SHORT).show();
                }*/


                cartProgressBar.setVisibility(View.GONE);

            } catch (Exception e) {
                Toast.makeText(CartActivity.this, e.toString(), Toast.LENGTH_LONG).show();
                cartProgressBar.setVisibility(View.GONE);
                e.printStackTrace();
            }

            //  spinner.setAdapter(new ArrayAdapter&lt;String&gt;(Checkout.this, android.R.layout.simple_spinner_dropdown_item, countries));


        }


    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {

            cartProgressBar.setVisibility(View.GONE);
            Toast.makeText(getApplicationContext(), &quot;&quot; + error, Toast.LENGTH_SHORT).show();
        }


    }) {
        @Override
        public String getBodyContentType() {
            return &quot;application/json&quot;;
        }

        @Override
        public Map&lt;String, String&gt; getHeaders() throws AuthFailureError {
            HashMap&lt;String, String&gt; headers = new HashMap&lt;String, String&gt;();
            headers.put(&quot;Authorization&quot;, BASE_Token);
            return headers;
        }


    };


    mStringRequest.setRetryPolicy(new DefaultRetryPolicy(
            90000,
            DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
            DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

    mRequestQueue.add(mStringRequest);
    // progressDialog.show();
    // mRequestQueue.add(mStringRequest);
    cartProgressBar.setVisibility(View.VISIBLE);

}

private void totalCounter() {

    String total23 = String.valueOf(mSubTotal + myshiping + myvat);

    double fulltotal = Double.parseDouble(total23);
    DecimalFormat df2 = new DecimalFormat(&quot;#.##&quot;);

    String roundoff = df2.format(fulltotal);

    total.setText(&quot;&#163;&quot;+roundoff);
}

huangapple
  • 本文由 发表于 2020年4月8日 17:38:49
  • 转载请务必保留本文链接:https://java.coder-hub.com/61097652.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定