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类中重写equals
和hashCode
方法。remove
方法的工作原理如下:
删除索引i最低的元素,使得(o == null?get(i)== null:o.equals(get(i)))(如果存在这样的元素)。