在listView中显示隐藏按钮

时间:2012-10-22 10:18:26

标签: android listview button adapter

请原谅我的英语我是法国人^^

所以,我对你来说是一个小问题!

我想在listView中显示隐藏按钮,但是当代码显示所有按钮(不只是一个)时。

看看我的代码:

public class ListViewShoplistAdapter extends BaseAdapter {

private ArrayList<Product> listCategory;
private Activity activity;
private ShopList shoplist;

public ListViewShoplistAdapter(Activity activity,ArrayList<Product> listCategory, ShopList shoplist) {
    super();
    this.activity = activity;
    this.listCategory = listCategory;
    this.shoplist = shoplist;
}

public int getCount() {
    return listCategory.size();
}

public Product getItem(int position) {
    return listCategory.get(position);
}

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

private class ViewHolder {
    public TextView productName;
    public TextView productPrice;
    public TextView productBrand;
    public ImageView product;
    public Button changeQuantity; 
    public RelativeLayout background;
}

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder view;
    LayoutInflater inflator = activity.getLayoutInflater();

    if(convertView == null) {
        view = new ViewHolder();
        convertView = inflator.inflate(R.layout.listviewshoplist, parent, false);

        view.productName = (TextView) convertView.findViewById(R.id.name);
        view.productPrice = (TextView) convertView.findViewById(R.id.price);
        view.productBrand = (TextView) convertView.findViewById(R.id.brand);
        view.changeQuantity = (Button) convertView.findViewById(R.id.changequantity);
        view.background = (RelativeLayout) convertView.findViewById(R.id.relativeLayout1);
        view.product = (ImageView) convertView.findViewById(R.id.imgproduct);
        convertView.setTag(view);
    }else {
        view = (ViewHolder) convertView.getTag();
    }

    String productName = listCategory.get(position).getName();
    view.productName.setText(productName);

    if (position==0){ // JUST for the first position, display the changeQuantity button ! => Button is displayed for all rows...
        view.changeQuantity.setVisibility(View.VISIBLE);
    }

    String price = String.valueOf(listCategory.get(position).getPrice())+"€";
    view.productPrice.setText(price);

    return convertView;

}

}

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

根据我的经验,您始终需要在else之后放置if

所以你需要像

这样的东西
if (position==0){ // JUST for the first position, display the changeQuantity button ! => Button is displayed for all rows...
        view.changeQuantity.setVisibility(View.VISIBLE);
    } else {
view.changeQuantity.setVisibility(View.INVISIBLE); // or View.GONE
}

答案 1 :(得分:1)

您应该将按钮设置为GONE

 if (position==0){ 
    view.changeQuantity.setVisibility(View.VISIBLE);
 } else 
    view.changeQuantity.setVisibility(View.GONE);

答案 2 :(得分:0)

在您的代码中尝试此操作..

if (position==0){ // JUST for the first position, display the changeQuantity button ! => Button is displayed for all rows...
    view.changeQuantity.setVisibility(View.VISIBLE);
}
else   // visibility gone
{
    view.changeQuantity.setVisibility(View.Gone);

}