我有一个通过列表视图添加行的视图。列表项横向有以下内容:复选框 - 复选框,项目名称 - textView,减号按钮 - Imagebutton,数量 - textview,添加按钮。- 图像按钮
我需要根据添加或减去点击来更新数量。我可以通过getTag()获取添加按钮的位置,但是无法获取对应的数量来更新。下面是适配器类
public class CustomAdapter extends BaseAdapter {
private List<String> mListItems;
private LayoutInflater mLayoutInflater;
private Context mContext;
ItemDBAdapter itemDB;
ViewHolder holder;
int a =1;
public CustomAdapter(Context context,ArrayList<String> arrayList){
mContext=context;
mListItems=arrayList;
mContext=context;
//get the layout inflater
mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return mListItems.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
private static class ViewHolder {
TextView itemName,quantity;
CheckBox checkbox;
ImageButton addBtn,minusBtn;
}
@Override
public View getView(int position, View convertview, ViewGroup viewGroup) {
// create a ViewHolder reference
//check to see if the reused view is null or not, if is not null then reuse it
if (convertview == null) {
holder = new ViewHolder();
convertview = mLayoutInflater.inflate(R.layout.list_item, null);
/* holder.itemName=new TextView(mContext);
holder.checkbox=new CheckBox(mContext);
holder.quantity=new TextView(mContext);
holder.addBtn=new ImageButton(mContext);
holder.minusBtn=new ImageButton(mContext)*/;
holder.itemName = (TextView) convertview.findViewById(R.id.item_name);
holder.addBtn = (ImageButton) convertview.findViewById(R.id.add);
holder.minusBtn = (ImageButton) convertview.findViewById(R.id.minus);
holder.quantity = (TextView) convertview.findViewById(R.id.item_quantity);
holder.checkbox = (CheckBox) convertview.findViewById(R.id.cbBox);
holder.checkbox.setOnCheckedChangeListener(checkListener);
holder.checkbox.setTag(position);
holder.minusBtn.setImageResource(R.drawable.minus);
holder.quantity.setText(String.valueOf(a));
holder.quantity.setTag(position);
holder.addBtn.setImageResource(R.drawable.add);
holder.addBtn.setOnClickListener(addBtnClick);
holder.addBtn.setTag(position);
//holder.minusBtn.setOnClickListener(minusBtnClick);
holder.minusBtn.setTag(position);
// the setTag is used to store the data within this view
convertview.setTag(holder);
} else {
// the getTag returns the viewHolder object set as a tag to the view
holder = (ViewHolder)convertview.getTag();
}
//get the string item from the position "position" from array list to put it on the TextView
String stringItem = mListItems.get(position);
if (stringItem != null) {
if (holder.itemName != null) {
//set the item name on the TextView
holder.itemName.setText(stringItem);
}
}
//this method must return the view corresponding to the data at the specified position.
return convertview;
}
private OnClickListener addBtnClick = new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stube
int b = (Integer) v.getTag();
a = a + 1;
holder.quantity.setText(String.valueOf(a));
}
};
}
由于数量不可点击,我无法获得更新数量的特定位置。请指教。谢谢。