滚动ListView时计算textview更改

时间:2016-03-17 12:10:56

标签: android listview cart clicking

在我的应用中,我通过以下方法填充listview。

将所有数据(产品,类别,计数,价格)保存到SQLite DB中。

将SQLite DB保存到列表中。

CartRes有吸气剂和放大器二传手。设置值并使用getter从Adapter类中检索它。

现在我需要通过单击增量/减量按钮来增加/减少计数值。

点击时值正在变化。但滚动列表视图时,所有textCount都设置为默认值1。

这是我的适配器类:

public class CartCountBaseAdapter extends BaseAdapter {
    Context con;
    ArrayList<HashMap<String, String>> ArproductMap;
    String MYFRAGMENT;
    ViewHolder viewHolder;
    int pos;
    DbHelper dbHelper;
    DbUtil dbUtil;
    List<CartRes> restaurantCart_prducts;

    CartRes cartRes;

    public CartCountBaseAdapter(Context context, List<CartRes> cartBasket, String myfragment) {
        super();
        this.restaurantCart_prducts = cartBasket;
        this.con = context;
        this.MYFRAGMENT = myfragment;
    }

    @Override
    public int getCount() {
        return restaurantCart_prducts.size();
    }

    @Override
    public Object getItem(int position) {
        return restaurantCart_prducts.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    public View getView(final int position, View convertView, final ViewGroup parent) {

        final ViewHolder viewHolder;
        LayoutInflater mInflater = (LayoutInflater) con.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        cartRes = restaurantCart_prducts.get(position);
        if (convertView == null) {

            convertView = mInflater.inflate(R.layout.cart_list_item, null);

            viewHolder = new ViewHolder();

            viewHolder.cartProduct = (TextView) convertView.findViewById(R.id.cartProduct);
            viewHolder.cartQuantity = (TextView) convertView.findViewById(R.id.cartQuantity);
            viewHolder.cartCount = (TextView) convertView.findViewById(R.id.cartCount);
            viewHolder.cartPrice = (TextView) convertView.findViewById(R.id.cartPrice);
            viewHolder.cartPriceDum = (TextView) convertView.findViewById(R.id.cartPriceDum);


            viewHolder.addTowish = (Button) convertView.findViewById(R.id.addTowish);
            viewHolder.remove = (Button) convertView.findViewById(R.id.remove);

            viewHolder.ivDecrease = (ImageView) convertView.findViewById(R.id.ivDecrease);
            viewHolder.ivIncrease = (ImageView) convertView.findViewById(R.id.ivIncrease);

            viewHolder.cardView = (CardView) convertView.findViewById(R.id.cardlist_item);

            if (MYFRAGMENT == "CheckOutFragment") {

                viewHolder.addTowish = (Button) convertView.findViewById(R.id.addTowish);
                viewHolder.remove = (Button) convertView.findViewById(R.id.remove);
                viewHolder.addTowish.setVisibility(View.GONE);
                viewHolder.remove.setVisibility(View.GONE);
                viewHolder.cardView.setCardElevation(0);

                LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams
                        (LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                viewHolder.cardView.setLayoutParams(layoutParams);
            }

            convertView.setTag(viewHolder);

        } else {
            viewHolder = (ViewHolder) convertView.getTag();
        }
        try {

            viewHolder.cartProduct.setText(cartRes.getCartproductName());
            viewHolder.cartQuantity.setText(cartRes.getCartcategoryName());
            viewHolder.cartCount.setText(cartRes.getCartCount() + "");
            viewHolder.cartPrice.setText(cartRes.getCartPrice() + "");
            viewHolder.cartPriceDum.setText(cartRes.getCartPrice() + "");


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

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

            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                int Quantity = Integer.parseInt(viewHolder.cartCount.getText().toString());
                cartRes = new CartRes();
                cartRes.setCartCount(cartRes.increaseQuantity(Quantity));
                viewHolder.cartCount.setText(cartRes.getCartCount() + "");
            }
        });

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

            public void onClick(View arg0) {
                int Quantity = Integer.parseInt(viewHolder.cartCount.getText().toString());
                Quantity--;
                Log.e("Base Position", String.valueOf(position));
                if (Quantity <= 0) {
                    Quantity = 0;
                }
                viewHolder.cartCount.setText("" + String.valueOf(Quantity));
            }
        });

        viewHolder.remove.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                ArproductMap.remove(position);
                dbUtil = new DbUtil(con);
                dbUtil.open();
                dbHelper = new DbHelper(con);

                notifyDataSetChanged();
            }
        });

        return convertView;
    }

    @Override
    public int getViewTypeCount() {

        return getCount();
    }

    @Override
    public int getItemViewType(int position) {

        return position;
    }

    public static class ViewHolder {
        public TextView cartProduct,
                cartQuantity,
                cartCount,
                cartPrice,
                cartPriceDum;

        public int Quantity;
        public ImageView ivDecrease;
        public ImageView ivIncrease;
        public Button addTowish;
        public Button remove;
        public CardView cardView;
    }
}

Bean Class(Getter&amp; Setter)

public class CartRes {
    private String CartcategoryName;
    private String CartproductName;
    private String product_id;
    private int CartPrice;
    private int CartCount;

    private int Quantity;

    public String getCartcategoryName() {
        return CartcategoryName;
    }

    public void setCartcategoryName(String cartcategoryName) {
        CartcategoryName = cartcategoryName;
    }

    public String getCartproductName() {
        return CartproductName;
    }

    public void setCartproductName(String cartproductName) {
        CartproductName = cartproductName;
    }

    public String getProduct_id() {
        return product_id;
    }

    public void setProduct_id(String product_id) {
        this.product_id = product_id;
    }

    public int getCartPrice() {
        Log.e("Product Check BeanGet", String.valueOf(CartPrice));
        return CartPrice;
    }

    public void setCartPrice(int cartPrice) {
        CartPrice = cartPrice;
        Log.e("Product Check Bean", String.valueOf(CartPrice));
    }

    public int getCartCount() {
        Log.e("Product Check Count", String.valueOf(CartCount));
        return CartCount;
    }

    public void setCartCount(int cartCount) {
        Log.e("Product Check Count", String.valueOf(cartCount));
        CartCount = cartCount;
    }

    public int increaseQuantity(int quantity) {
        if (quantity < 1)
            quantity = 1;
        else
            quantity++;

        Quantity = quantity;
        return Quantity;
    }
}

1 个答案:

答案 0 :(得分:1)

删除方法getViewTypeCount()getItemViewType()。将替换cartRes = restaurantCart_prducts.get(position);final CartRes cartRes = restaurantCart_prducts.get(position);一起移动到getView方法中。

同时删除cartRes = new CartRes(); onclicklistener中ivIncrease的不需要的初始化。

删除cartRes

的全局声明