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没必要用静态

    评论

报告相同问题?

悬赏问题

  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?
  • ¥50 invest生境质量模块