Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在listView android中显示空行和重复行_Android - Fatal编程技术网

在listView android中显示空行和重复行

在listView android中显示空行和重复行,android,Android,这是我传递产品的适配器 public class AdapterShoppingCartItem extends BaseAdapter { private Context context; private ArrayList<Product> products = new ArrayList(); public AdapterShoppingCartItem(Context context, ArrayList<Product> product

这是我传递产品的适配器

public class AdapterShoppingCartItem extends BaseAdapter {
    private Context context;
    private ArrayList<Product> products = new ArrayList();

    public AdapterShoppingCartItem(Context context, ArrayList<Product> products) {
        this.context = context;
        this.products = products;
    }

    /*private view holder class*/
    private class ViewHolder {
        ImageView imageView;
        TextView productName;
        TextView productMrp;
        TextView productSellPrice;
        TextView productItemInCart;
        TextView productTotal;
        Button plusButton;
        Button minusButton;
    }


    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder = null;

        LayoutInflater mInflater = (LayoutInflater)
                context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.listview_shopping_cart_item, null);
            holder = new ViewHolder();
            holder.productName = (TextView) convertView.findViewById(R.id.productName);
            holder.productMrp = (TextView) convertView.findViewById(R.id.mrp);
            holder.productSellPrice = (TextView) convertView.findViewById(R.id.sellPrice);
            holder.productItemInCart = (TextView) convertView.findViewById(R.id.quantity);
            holder.productTotal = (TextView) convertView.findViewById(R.id.total);
            holder.plusButton = (Button) convertView.findViewById(R.id.plusButton);

            holder.minusButton = (Button) convertView.findViewById(R.id.minusButton);

            holder.minusButton.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View v) {
                    Utility.displayToast("minus");
                }
            });

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        final Product product = (Product) getItem(position);
        if (product != null) {
            ArrayList<ProductVariant> productVariants = product.getProductVariants();
            for(int j=0; j<productVariants.size(); ++j){
                final ProductVariant productVariant = productVariants.get(j);
                if(productVariant.getInCart() > 0){

                    String productName = product.getProductName()
                            + " " + productVariant.getVariant().getVariantName();

                    holder.productName.setText(productName);

                    BigDecimal mrp = productVariant.getMrp();
                    holder.productMrp.setText(mrp.toString());

                    BigDecimal sellPrice = productVariant.getSellPrice();
                    holder.productSellPrice.setText(sellPrice.toString());

                    int quantity = productVariant.getInCart();
                    holder.productItemInCart.setText(Integer.toString(quantity));

                    Payment payment = new Payment();
                    BigDecimal total = payment.calculateCost(quantity, sellPrice);


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

                            productVariant.setInCart(1 + productVariant.getInCart());
                            notifyDataSetChanged();
                            Utility.displayToast("plus");

                        }
                    });



                }
            }




            //if (holder.imageView != null) {
                //new Utility.ImageDownloaderTask(holder.imageView).execute(String.valueOf(brand.getBrandImagePath()));
            //}
            //holder.imageView.setText(brand.getBrandImagePath());
        } else {
            Toast.makeText(context, "shoppingCartItem is null", Toast.LENGTH_SHORT).show();
        }

        return convertView;
    }

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

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

    @Override
    public long getItemId(int position) {
        return products.indexOf(getItem(position));
    }
}
公共类适配器ShoppingCartItem扩展BaseAdapter{
私人语境;
私有ArrayList产品=新ArrayList();
公共AdapterShoppingCartItem(上下文、ArrayList产品){
this.context=上下文;
这一点。产品=产品;
}
/*私有视图持有者类*/
私有类视窗持有者{
图像视图图像视图;
TextView产品名称;
文本视图产品MRP;
TextView产品售价;
TextView ProductItemIntranet;
文本视图产品总数;
按钮加上按钮;
按钮和按钮;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
ViewHolder=null;
LayoutInflater mInflater=(LayoutInflater)
context.getSystemService(Activity.LAYOUT\u INFLATER\u SERVICE);
if(convertView==null){
convertView=mInflater.充气(R.layout.listview\u购物车\u商品,空);
holder=新的ViewHolder();
holder.productName=(TextView)convertView.findViewById(R.id.productName);
holder.productMrp=(TextView)convertView.findViewById(R.id.mrp);
holder.productSellPrice=(TextView)convertView.findViewById(R.id.sellPrice);
holder.productItemInvestat=(TextView)convertView.findViewById(R.id.quantity);
holder.productTotal=(TextView)convertView.findViewById(R.id.total);
holder.plusButton=(按钮)convertView.findViewById(R.id.plusButton);
holder.minusButton=(Button)convertView.findViewById(R.id.minusButton);
holder.minusButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
实用程序。显示Toast(“减号”);
}
});
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
最终产品产品=(产品)getItem(位置);
如果(产品!=null){
ArrayList productVariants=product.getProductVariants();
对于(int j=0;j 0){
字符串productName=product.getProductName()
+“”+productVariant.getVariant().getVariantName();
holder.productName.setText(产品名称);
BigDecimal mrp=productVariant.getMrp();
holder.productMrp.setText(mrp.toString());
BigDecimal sellPrice=productVariant.getSellPrice();
holder.productSellPrice.setText(sellPrice.toString());
int quantity=productVariant.getInvot();
holder.productItemInvestment.setText(整数.toString(数量));
付款=新付款();
BigDecimal合计=付款。计算成本(数量、售价);
holder.plusButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
productVariant.setIntranet(1+productVariant.getIntranet());
notifyDataSetChanged();
效用。显示土司(“加”);
}
});
}
}
//if(holder.imageView!=null){
//新的实用工具.ImageDownloaderTask(holder.imageView).execute(String.valueOf(brand.getBrandImagePath());
//}
//holder.imageView.setText(brand.getBrandImagePath());
}否则{
Toast.makeText(上下文,“shoppingCartItem为null”,Toast.LENGTH_SHORT.show();
}
返回视图;
}
@凌驾
public int getCount(){
返回产品。大小();
}
@凌驾
公共对象getItem(int位置){
退货。获得(职位);
}
@凌驾
公共长getItemId(int位置){
返回产品。索引of(getItem(position));
}
}
我只想显示其中任何变量在购物车中的值大于0的产品。但我上面的逻辑显示了很多空行,即使我保持了if条件


有人能帮忙解释一下逻辑上的错误吗?如何修复此问题?

删除For循环int getView()方法。正如您在getCount()中提到的产品大小。使用getview方法中的位置值在Productvariant中循环,并根据购物车计数条件显示项目

    ArrayList<ProductVariant> productVariants = product.getProductVariants();

     final ProductVariant productVariant = productVariants.get(position);
    if(productVariant.getInCart()>0)               
     {
  convertView.setVisibility(View.VISIBLE);                      
  String productName = product.getProductName()
                                + " " + productVariant.getVariant().getVariantName();

                        holder.productName.setText(productName);

                        BigDecimal mrp = productVariant.getMrp();
                        holder.productMrp.setText(mrp.toString());

                        BigDecimal sellPrice = productVariant.getSellPrice();
                        holder.productSellPrice.setText(sellPrice.toString());

                        int quantity = productVariant.getInCart();
                        holder.productItemInCart.setText(Integer.toString(quantity));

                        Payment payment = new Payment();
                        BigDecimal total = payment.calculateCost(quantity, sellPrice);


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

                                productVariant.setInCart(1 + productVariant.getInCart());
                                notifyDataSetChanged();
                                Utility.displayToast("plus");
     }
else
{
convertView.setVisibility(View.GONE);
}
ArrayList productVariants=product.getProductVariants();
最终产品变量ProductVariant=productVariants.get(位置);
if(productVariant.getInvott()>0)
{
convertView.setVisibility(View.VISIBLE);
字符串productName=product.getProductName()
+“”+productVariant.getVariant().getVariantName();
holder.productName.setText(产品名称);
BigDecimal mrp=productVariant.getMrp();
holder.productMrp.setText(mrp.toString());
BigDecimal sellPrice=productVariant.getSellPrice();
holder.productSellPrice.setText(sellPrice.toString());
int quantity=productVariant.getInvot();
holder.productItemInvestment.setText(整数.toString(数量));
付款=新付款();
BigDecimal合计=付款。计算成本(数量、售价);
holder.plusButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
productVariant.SetInvot(1+产品