Анонимный баг в TextView

Я разрабатываю ресторанное приложение. Здесь я использую страницу корзины для просмотра продуктов питания, которые пользователь выбрал для оформления заказа. Элементы корзины перечислены с помощью RecyclerView, который имеет кнопку+ & -, чтобы увеличить и уменьшить количество продуктов перед выездами. Моя проблема здесь.

Давайте рассмотрим следующие пункты:

                                   Result TextView
ChocoBar    Rs25     -   4   +   =      100      // Expected Result

Vennila     Rs30     -   1   +   =      30

При нажатии кнопки » + » в ChocoBar

                                  Result TextView
ChocoBar    Rs25     -   5   +   =       100   ( set as 125 within fraction of second it is changed to 100)     

Vennila     Rs30     -   1   +   =        30

Но если я использую getText,

resultTextView is nothing but in code I used as holder.cartPriceDum

resultTextview.getText ().toString — > возвращает 125 в качестве значений элемента ChocoBar.

GetText работает, но setText не работает. Getting messup. Пожалуйста, помогите мне, я потратил больше времени, чтобы исправить это.До сих пор я его не починил.

MyCode выглядит следующим образом:

holder.ivIncrease.setOnClickListener(new View.OnClickListener() {

    public void onClick(View arg0) {
        clicked = true;

        cartPrice = Integer.parseInt(holder.cartPrice.getText().toString());
        InDeQuantity = Integer.parseInt(holder.cartCount.getText().toString());
        if (null != mListener) {
            cartRes.get(position).CartCount = (bigInt + 1);
            notifyItemChanged(position);
            mListener.onListFragmentInteraction(holder.cartRess);
        }
        UpdateCart(arg0);
    }

    private void UpdateCart(View view) {
        String pID = cartRes.get(position).product_id;
        int cartPrice = Integer.parseInt(holder.cartPrice.getText().toString());
        int cartIndividualTotal = cartRes.get(position).subTotal;

        int cartCount = cartRes.get(position).CartCount;

        System.out.println("Restaurant" + "   Check" + "Product ID  " + pID + "Cart Price " + cartPrice +

                " cartIndividual Total  " + cartIndividualTotal + " CartCount " + cartCount);

        CommonUtil.dbUtil.open();
        CommonUtil.dbUtil.updateaddToCart(pID, cartPrice, cartCount, cartIndividualTotal);
        Total = CommonUtil.dbUtil.getMultiply(pID);
        CommonUtil.dbUtil.updateNetAmount(pID, Total);
        setCartPrice(pID, holder);
        view.invalidate();

        /*--- Set all the updated value into the CartRes Class---*/

        System.out.println("Cart Details" + cartRes.get(position).product_id + "  " +
                cartRes.get(position).CartproductName + "  " + cartRes.get(position).CartcategoryName +
                " " + cartCount + "  " + cartPrice + "  " + Total);

        CartRes cartBasket = new CartRes(cartRes.get(position).product_id, cartRes.get(position).
                CartproductName, cartRes.get(position).CartcategoryName,
                cartCount, cartPrice, Total);
    }
});

/*======================================= *** ==============================================*/

/*--- If Cart count is 1, then disable Decrement icon*/
if (InDeQuantity <= 1) {
    holder.ivDecrease.setVisibility(View.INVISIBLE);
} else {
    holder.ivDecrease.setVisibility(View.VISIBLE);
}

/*====================================  Decreasing Cart ====================================*/

holder.ivDecrease.setOnClickListener(new View.OnClickListener() {

    public void onClick(View arg0) {
        clicked = true;

        cartPrice = Integer.parseInt(holder.cartPrice.getText().toString());
        InDeQuantity = Integer.parseInt(holder.cartCount.getText().toString());
        if (null != mListener) {
            if (InDeQuantity > 1) {
                cartRes.get(position).CartCount = (bigInt - 1);
                notifyItemChanged(position);
                mListener.onListFragmentInteraction(holder.cartRess);
            } else if (InDeQuantity <= 0) {
                InDeQuantity = 1;
            }
        }
        UpdateCart(arg0);
    }

    private void UpdateCart(View view) {
        String pID = cartRes.get(position).product_id;
        int cartPrice = Integer.parseInt(holder.cartPrice.getText().toString());
        int cartCount = cartRes.get(position).CartCount;
        int cartIndividualTotal = cartRes.get(position).subTotal;


        CommonUtil.dbUtil.open();
        CommonUtil.dbUtil.updateaddToCart(pID, cartPrice, cartCount, cartIndividualTotal);
        System.out.println("Restaurant " + pID + "  " + cartPrice + " " + cartCount + " " + cartIndividualTotal);
        Total = CommonUtil.dbUtil.getMultiply(pID);

        CommonUtil.dbUtil.updateNetAmount(pID, Total);
        setCartPrice(pID, holder);

        view.invalidate();

        System.out.println("Cart Details" + cartRes.get(position).product_id + "  " +
                cartRes.get(position).CartproductName + "  " + cartRes.get(position).CartcategoryName +
                " " + cartCount + "  " + cartPrice + "  " + Total);

        CartRes cartBasket = new CartRes(cartRes.get(position).product_id,
                cartRes.get(position).CartproductName,
                cartRes.get(position).CartcategoryName,
                cartCount, cartPrice, Total);
    }
});

private void setCartPrice(String pID, ViewHolder holder) {
    Cursor cursor = CommonUtil.dbUtil.getCartIndividualPrice(pID);
    if (cursor != null && cursor.moveToFirst()) {
        int cartIndividualTotal = Integer.parseInt(cursor.getString(cursor.getColumnIndex(DbHelper.CART_TOTAL)));

        holder.cartPriceDum.setText(String.valueOf(cartIndividualTotal));

        Log.e("Restaurant", " ADapterCheck" + cartIndividualTotal + " " + holder.cartPriceDum.getText().toString());
    }
}

2 ответа

  1. Вы аннулируете свое мнение. После setCartPrice(pID, holder); view.invalidate();

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

  2. try like this
    
    
    
    //set Listener
    holder.ivIncrease.setOnClickListener(new IncreaseListener(holder.cartPrice,holder.cartCount,mListner,holder.cartRess,position));
    
    // Create listener like this
    class IncreaseListener implements View.OnClickListener
    {
    TextView cartPrice;
    TextView cartCount;
    Listener mListener;
    TextView cartRess;
    int position;
    IncreaseListener(TextView cartPrice,TextView cartCount,Listener mListener,TextView cartRess, int position)
    {
    this.cartPrice= cartPrice;
    this.cartCount = cartCount;
    this.cartRess = cartRess;
    this.position = position;
    this.mListener = mListener;
    }
        public void onClick(View arg0) {
            clicked = true;
    
           int  cartPrice = Integer.parseInt(cartPrice.getText().toString());
           int InDeQuantity = Integer.parseInt(cartCount.getText().toString());
            if (null != mListener) {
                cartRes.get(position).CartCount = (bigInt + 1);
                notifyItemChanged(position);
                mListener.onListFragmentInteraction(cartRess);
            }
            UpdateCart(arg0);
    
    }
    private void UpdateCart(View view) {
            String pID = cartRes.get(position).product_id;
            int cartPrice = Integer.parseInt(cartPrice.getText().toString());
            int cartIndividualTotal = cartRes.get(position).subTotal;
    
            int cartCount = cartRes.get(position).CartCount;
    
            System.out.println("Restaurant" + "   Check" + "Product ID  " + pID + "Cart Price " + cartPrice +
    
                    " cartIndividual Total  " + cartIndividualTotal + " CartCount " + cartCount);
    
            CommonUtil.dbUtil.open();
            CommonUtil.dbUtil.updateaddToCart(pID, cartPrice, cartCount, cartIndividualTotal);
            Total = CommonUtil.dbUtil.getMultiply(pID);
            CommonUtil.dbUtil.updateNetAmount(pID, Total);
            setCartPrice(pID, holder);
            view.invalidate();
    
            /*--- Set all the updated value into the CartRes Class---*/
    
            System.out.println("Cart Details" + cartRes.get(position).product_id + "  " +
                    cartRes.get(position).CartproductName + "  " + cartRes.get(position).CartcategoryName +
                    " " + cartCount + "  " + cartPrice + "  " + Total);
    
            CartRes cartBasket = new CartRes(cartRes.get(position).product_id, cartRes.get(position).
                    CartproductName, cartRes.get(position).CartcategoryName,
                    cartCount, cartPrice, Total);
        }
    }