dzs-妖帝 2016-09-03 07:41 采纳率: 0%
浏览 889

Android购物车全选报空指针(文中有给出报空指针的地方)

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;
}

  • 写回答

2条回答 默认 最新

  • 沙鸥丶 2016-09-03 11:23
    关注

    // viewHolder.check.setChecked(getIsSelected().get(position));
    这一行空指针吗?如果确认checkBox不为空,就可能是map的问题
    而且这个map没必要用静态

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料