已经删除了,但是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();
}

解决方案 »

  1.   

    infos.remove(getInfo(packageName));
    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()才会有效。
      

  2.   

    不好意思,最后写错了,应该是这样调用
    adapter.remove(i);
    adapter.notifyDataSetChanged();