[英]object is not getting removed from list onCheckedChange listener of check box
[英]Object is not getting removed properly from Array list
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 appmodel = new AppModel();
appmodel.pkgName = packageName;
在这里,您要创建一个新Object
并添加或删除。如果isChecked
为false,则说明您正在创建一个新object
并执行删除操作。但是到目前为止,尚未添加该新创建的对象。该列表..这就是为什么它不删除..
像这样检查并删除..
else{
for (AppModel amodel : selected) {
if (model.pkgName.equals(packageName)) {
selected.remove(model);
break;
}
}
}
您应该在AppModel类中重写equals
和hashCode
方法。
这是remove
方法的工作方式:
删除索引i最低的元素,使得(o == null?get(i)== null:o.equals(get(i))) (如果存在这样的元素)。
删除或添加项目后,通知数据集已更改。 yourAdapter.notifyDataSetChanged()函数可以执行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.