private List<ShoppingBean> mList=new ArrayList<>();
public static HashMap<Integer,Boolean> isSelected;
private Context context;
//为单选设置的回调
private Callback mCallback;
public static HashMap<Integer,Boolean> getIsSelected() {
return isSelected;
}
public static void setIsSelected(HashMap<Integer, Boolean> isSelected) {
ShoppingAdapter.isSelected = isSelected;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mCallback.click((CheckBox) buttonView, isChecked);
}
public interface Callback{
void click(CheckBox check, boolean isChecked);
}
public ShoppingAdapter(List<ShoppingBean> list, Context context, Callback mCallback) {
this.mList = list;
this.context = context;
this.mCallback = mCallback;
isSelected=new HashMap<>();
initData();
}
//初始化isSelected
private void initData() {
for (int i = 0; i < mList.size(); i++) {
getIsSelected().put(i, false);
}
}
@Override
public int getCount() {
return mList.size();
}
@Override
public Object getItem(int position) {
return mList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder=null;
if (convertView==null){
viewHolder=new ViewHolder();
convertView= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_shopping,null);
viewHolder.check= (CheckBox) convertView.findViewById(R.id.item_cb);
viewHolder.img_goods= (ImageView) convertView.findViewById(R.id.img_goods);
viewHolder.name= (TextView) convertView.findViewById(R.id.name);
viewHolder.guige= (TextView) convertView.findViewById(R.id.guige);
viewHolder.tv_pay= (TextView) convertView.findViewById(R.id.tv_pay);
viewHolder.number= (TextView) convertView.findViewById(R.id.number);
convertView.setTag(viewHolder);
}else{
viewHolder= (ViewHolder) convertView.getTag();
}
ShoppingBean shoppingBean=mList.get(position);
viewHolder.name.setText(shoppingBean.getWareName());
viewHolder.guige.setText(shoppingBean.getCaption());
viewHolder.tv_pay.setText(shoppingBean.getPrice());
viewHolder.number.setText(shoppingBean.getQuantity());
viewHolder.check.setOnCheckedChangeListener(this);
viewHolder.check.setTag(position);
String img=shoppingBean.getWarePicture();
if (img!=null){
Glide.with(context).load(img).placeholder(R.mipmap.picture).error(R.mipmap.picture) .into(viewHolder.img_goods);
}
//下边这行一直报空指针是为什么呢?
// viewHolder.check.setChecked(getIsSelected().get(position));
return convertView;
}
public static class ViewHolder{
public CheckBox check;
public ImageView img_goods;
public TextView name,guige,tv_pay,number;
}