【发布时间】:2018-06-06 09:52:17
【问题描述】:
我是 android 新手,正在开发电子商务应用程序。我有一个产品的模型类(指定产品名称、价格等)。
public class Product implements Serializable {
/**
* The item Merchant Name.
*/
private String merchantName = "";
/**
* The item desc.
*/
private String description = "";
/**
* The mrp.
*/
private String mrp;
/**
* The discount.
*/
private String discount;
/**
* The image url.
*/
private int imageUrl;
private String productName = "";
private String productId = "";
public Product(String description, String mrp, String discount,
int imageUrl, String productName, String productId, String merchantName) {
this.description = description;
this.mrp = mrp;
this.discount = discount;
this.imageUrl = imageUrl;
this.productName = productName;
this.productId = productId;
this.merchantName=merchantName;
}
public void setMerchantName(String merchantName) {
this.merchantName = merchantName;
}
public void setDescription(String description) {
this.description = description;
}
public void setMrp(String mrp) {
this.mrp = mrp;
}
public void setDiscount(String discount) {
this.discount = discount;
}
public void setImageUrl(int imageUrl) {
this.imageUrl = imageUrl;
}
public void setProductName(String productName) {
this.productName = productName;
}
public void setProductId(String productId) {
this.productId = productId;
}
public String getMerchantName(){
return merchantName; }
public String getDescription() {
return description;
}
public String getMrp() {
return mrp;
}
public String getDiscount() {
return discount;
}
public int getImageUrl() {
return imageUrl;
}
public String getProductName() {
return productName;
}
public String getProductId() {
return productId;
}
}
我想将产品从数组列表显示到列表视图。但是,如果 arraylist 中有两次相同的产品(具有相同的 productId),我希望它在 ListView 上仅显示一行,数量为 2(请参见图片)。谁能帮我解决这个问题?
这是列表视图适配器类:
public class MyOrdersProducts_Adapter extends BaseAdapter {
Activity activity;
ArrayList<Product> cartproductsList;
Product tempValues;
public MyOrdersProducts_Adapter(Activity activity,ArrayList<Product> cartproductsList){
this.activity=activity;
this.cartproductsList=cartproductsList;
}
@Override
public int getCount() {
return cartproductsList.size();
}
@Override
public Object getItem(int i) {
return cartproductsList.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
class MyViewHolder{
CheckBox checkBox;
ImageView imageView;
LinearLayout listRow;
TextView price,title,quantity;
public MyViewHolder(View v){
checkBox=v.findViewById(R.id.checkbox_product);
imageView=v.findViewById(R.id.img_product_list);
price=v.findViewById(R.id.price_productlist);
title=v.findViewById(R.id.title_productlist);
quantity=v.findViewById(R.id.quantity_productlist);
listRow=v.findViewById(R.id.productlist_row);
}
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
View rowView=view;
MyViewHolder holder;
if(rowView==null){
LayoutInflater inflater=activity.getLayoutInflater();
rowView=inflater.inflate(R.layout.myordersproducts_row,null);
holder=new MyViewHolder(rowView);
rowView.setTag(holder);
}
else
holder= (MyViewHolder) rowView.getTag();
tempValues=cartproductsList.get(i);
holder.imageView.setImageResource(tempValues.getImageUrl());
holder.title.setText(tempValues.getProductName());
holder.price.setText(tempValues.getMrp());
return rowView;
}
}
编辑:
请注意我不能使用 HashSet(用于创建唯一列表)或 HashMap(用于映射具有整数计数值的产品),因为我无法将数据从 HashSets 设置到 BaseAdapter。
【问题讨论】:
-
在将其设置到适配器之前尝试检查重复的产品,这比在回收站/列表视图中计算更容易
-
谢谢@UMESH0492 请看编辑。
标签: java android listview arraylist