已经删除了,但是list上还存在,像是没刷新,但是adapter.notifyDataSetChanged();这句也执行了.
public void onClick(View v) {
Uri uri = Uri.fromParts("package",data.get(position).packageName, null);
//Uri uri = Uri.fromParts("package",((ViewHolder)v.getTag()).packageName, null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
String packageName = intent.getDataString();
infos.remove(getInfo(packageName));
textview.setText("共有软件" + (apkInfos.size() - 1) + "个");
adapter.notifyDataSetChanged();
}
public void onClick(View v) {
Uri uri = Uri.fromParts("package",data.get(position).packageName, null);
//Uri uri = Uri.fromParts("package",((ViewHolder)v.getTag()).packageName, null);
Intent intent = new Intent(Intent.ACTION_DELETE, uri);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
String packageName = intent.getDataString();
infos.remove(getInfo(packageName));
textview.setText("共有软件" + (apkInfos.size() - 1) + "个");
adapter.notifyDataSetChanged();
}
adapter.notifyDataSetChanged();
这两句之间有逻辑错误,你这样做只是操作了数据源的记录,对adapter里的数据根本没有影响。比如
public class MyAdapter extends BaseAdapter {
private ArrayList<int> list;
public void delete(int i){
list.remove(i); }
}
这是我定义的adapter,其他代码省略,里面有个list和自定义的delete方法,这样在外部调用
infos.remove(i);
adapter.notifyDataSetChanged();
就会有效果了,我们必须更新adapter里面的数据notifyDataSetChanged()才会有效。
adapter.remove(i);
adapter.notifyDataSetChanged();