ICheckBoxClick icheckBoxClick = new ICheckBoxClick() {

        @Override
        public void onCheckCliked(boolean isChecked,String pkgName,int pos) {
        String packageName = cat_name+","+pkgName;
        AppModel appmodel = new AppModel();
        appmodel.pkgName = packageName;
        appmodel.dbId = 0;
           if( isChecked ) {
             selected.add(appmodel);
           } else{
             selected.remove(appmodel);
           }
        }
    };

    appsGrid.setAdapter(new AllAppsSelectionAdapter(actityCtx,icheckBoxClick));
     Button addItems = (Button) dialog.findViewById(R.id.add_applications);
     addItems.setOnClickListener( new OnClickListener() {
        @Override
        public void onClick(View v) {
          iAddSubItemsClick.addClicked( selected );
          dialog.dismiss();
        }
    });


上面的代码有什么问题?基于isChecked,分别在arrayList中添加对象或从中删除对象。但是单击确定按钮仍然能够看到其中存在的对象。似乎对象没有被正确删除。

最佳答案

您应该在AppModel类中重写equalshashCode方法。

remove方法的工作原理如下:


  删除索引i最低的元素,使得(o == null?get(i)== null:o.equals(get(i)))(如果存在这样的元素)。

10-07 12:47