java当我在ListView中滚动按钮位置时发生变化
我已经实现了一个ListView
。从ListView
我将向购物车添加一个产品。我的问题是,如果我添加第一个产品,我会将按钮名称Addtocart
更改为Added
。如果我滚动ListView
,第四个位置的产品按钮名称将更改为“添加”
我该如何解决这个问题
这是我的代码:
holderForGrid.AddtoCart.setTag(position);
holderForGrid.AddtoCart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
holderForGrid.AddtoCart.setText("Added");
}
});
适配器类:
类ListAdapter扩展了BaseAdapter{
public Context context;
public ListAdapter(Context a,List<BusinessCatalogVariables> listDataHeader) {
this.listDataHeader = listDataHeader;
context = a;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return catalogList.size();
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1)
@Override
public View getView(final int position, View convertView, ViewGroup arg2) {
final ViewHolderGrid holderForGrid;
if (convertView == null) {
convertView = getLayoutInflater().inflate(R.layout.catalog_list_item, null);
holderForGrid = new ViewHolderGrid(convertView);
convertView.setTag(holderForGrid);
} else {
holderForGrid = (ViewHolderGrid) convertView.getTag();
}
finalCatalogVariables Catalog = catalogList.get(position);
holderForGrid.AddtoCart.setClickable(false);
holderForGrid.AddtoCart.setTag(position);
holderForGrid.AddtoCart.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
int position1=(Integer)arg0.getTag();
AddedProduct = (String) holderForGrid.CatalogHeader.getText();
holderForGrid.AddtoCart.setText("Added");
}
});
return convertView;
}
private class ViewHolderGrid {
Button AddtoCart = null;
ViewHolderGrid(View convertView) {
AddtoCart = (Button) convertView.findViewById(R.id.btn_AddtoCart);
}
}
}
# 1 楼答案
在
finalCatalogVariables
类中创建boolean
变量added
。 并为该变量创建getter、setter方法。 比如然后在
getView
方法中点击holderForGrid.AddtoCart