Java 对象未从数组列表中正确删除
上面的代码有什么错误?基于isChecked am,将对象分别添加到arrayList和从arrayList中删除对象。但点击“确定”按钮,我仍然能看到里面的物体。看起来物体并没有被正确移除 你的台词有错Java 对象未从数组列表中正确删除,java,android,arrays,Java,Android,Arrays,上面的代码有什么错误?基于isChecked am,将对象分别添加到arrayList和从arrayList中删除对象。但点击“确定”按钮,我仍然能看到里面的物体。看起来物体并没有被正确移除 你的台词有错 ICheckBoxClick icheckBoxClick = new ICheckBoxClick() { @Override public void onCheckCliked(boolean isChecked,String pkgName,i
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();
}
});
这里您正在创建一个新的对象并添加或删除..如果被选中
为false,则您正在创建一个新的对象
并执行删除操作。但新创建的对象尚未添加..您正在删除不在列表中的对象..这就是为什么它没有删除
像这样检查并移除
AppModel appmodel = new AppModel();
appmodel.pkgName = packageName;
这是你台词中的错误
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();
}
});
这里您正在创建一个新的对象并添加或删除..如果被选中
为false,则您正在创建一个新的对象
并执行删除操作。但新创建的对象尚未添加..您正在删除不在列表中的对象..这就是为什么它没有删除
像这样检查并移除
AppModel appmodel = new AppModel();
appmodel.pkgName = packageName;
这是你台词中的错误
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();
}
});
这里您正在创建一个新的对象并添加或删除..如果被选中
为false,则您正在创建一个新的对象
并执行删除操作。但新创建的对象尚未添加..您正在删除不在列表中的对象..这就是为什么它没有删除
像这样检查并移除
AppModel appmodel = new AppModel();
appmodel.pkgName = packageName;
这是你台词中的错误
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();
}
});
这里您正在创建一个新的对象并添加或删除..如果被选中
为false,则您正在创建一个新的对象
并执行删除操作。但新创建的对象尚未添加..您正在删除不在列表中的对象..这就是为什么它没有删除
像这样检查并移除
AppModel appmodel = new AppModel();
appmodel.pkgName = packageName;
您应该重写AppModel类中的equals
和hashCode
方法
以下是remove
方法的工作原理:
移除索引最低的元素i,以便(o==null?get(i)==null:o.equals(get(i))(如果存在这样的元素)
您应该重写AppModel类中的equals
和hashCode
方法
以下是remove
方法的工作原理:
移除索引最低的元素i,以便(o==null?get(i)==null:o.equals(get(i))(如果存在这样的元素)
您应该重写AppModel类中的equals
和hashCode
方法
以下是remove
方法的工作原理:
移除索引最低的元素i,以便(o==null?get(i)==null:o.equals(get(i))(如果存在这样的元素)
您应该重写AppModel类中的equals
和hashCode
方法
以下是remove
方法的工作原理:
移除索引最低的元素i,以便(o==null?get(i)==null:o.equals(get(i))(如果存在这样的元素)
删除或添加项目后,通知数据集已更改。
yourAdapter.notifyDataSetChanged()函数执行此操作。删除或添加项后,通知数据集已更改。
yourAdapter.notifyDataSetChanged()函数执行此操作。删除或添加项后,通知数据集已更改。
yourAdapter.notifyDataSetChanged()函数执行此操作。删除或添加项后,通知数据集已更改。
yourAdapter.notifyDataSetChanged()函数执行此操作。在不知道所选的集合是什么(列表?集合?)的情况下,我猜想所选的集合和所构建的AppModel
对象中的内容不满足相等条件。对于AppModel
类,是否有equals
方法?在ArrayListpublic类AppModel{public String pkgName=null;public long dbId=0;}中选择,而不知道所选的集合是什么(列表?集合?)我想,所选
集合和您构建的AppModel
对象中的内容不符合相等条件。对于AppModel
类,是否有equals
方法?在ArrayListpublic类AppModel{public String pkgName=null;public long dbId=0;}中选择,而不知道所选的集合是什么(列表?集合?)我想,所选
集合和您构建的AppModel
对象中的内容不符合相等条件。对于AppModel
类,是否有equals
方法?在ArrayListpublic类AppModel{public String pkgName=null;public long dbId=0;}中选择,而不知道所选的集合是什么(列表?集合?)我想,所选
集合和您构建的AppModel
对象中的内容不符合相等条件。对于AppModel
类,是否有equals
方法?在ArrayListpublic类AppModel{public String pkgName=null;public long dbId=0;}中选择,但仍然不清楚,即使我创建了一个对象,如果isChecked为false,我还没有将其添加到ArrayList中!酷明白了这个概念。好的..Arraylist是对象的集合..只有当同一个对象被添加到arralist时,你才能执行删除操作..这里你正在使用新的操作器创建新的对象,但是你添加了不同的对象..所以对象不会删除..但是仍然不清楚,即使我创建了一个对象,如果isChecked为false,我还没有将其添加到ArrayList中!很酷。好的。Arraylist是对象的集合。你可以执行删除操作