在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+产品