0

我将数据库值与 packageinfo 进行比较这是截图 http://imgur.com/psGyBGo

我在列表中获取所有数据库值 List arraylist = db.getAllApps();

如何将此列表与安装 ap 包名称列表进行比较?下面是我的代码快照请帮助我如何比较???此行不过滤值
if ( (p.packageName).equals(arraylist)) 我如何过滤值以便匹配并仅显示列表中与数据库匹配的值

                   private List<App> loadInstalledApps(boolean includeSysApps) {
    List<App> apps = new ArrayList<App>();

    // the package manager contains the information about all installed apps
    PackageManager packageManager = getPackageManager();

    List<PackageInfo> packs = packageManager.getInstalledPackages(0); 
List arraylist = db.getAllApps();

    for (int i = 0; i < packs.size(); i++) {
        PackageInfo p = packs.get(i);
        ApplicationInfo applicationInfo = p.applicationInfo;




//  if (arraylist.equals(p.packageName))

        if ( (p.packageName).equals(arraylist))


        {
            App app = new App();
            app.setTitle(p.applicationInfo.loadLabel(packageManager)
                    .toString());
            app.setPackageName(p.packageName);
            app.setVersionName(p.versionName);
            app.setVersionCode(p.versionCode);
            CharSequence description = p.applicationInfo
                    .loadDescription(packageManager);
            app.setDescription(description != null ? 
        description.toString()
                    : "");
            apps.add(app);
            // }
        }
    }
    return apps;
    }
4

2 回答 2

3

在列表中查找

if(arraylist.contains(p.packageName)) {
      //your code here
}

如果 arrayList 是字符串列表,则此代码有效,如果是其他类,则有两个选项

1) 比较所有对象

if(arraylist.contains(p)) {
      //your code here
}

2)按包名(或其他属性)比较

bool isInList = false;
for (MyClass object : array list) {
    if (object.packageName.equals(p.packageName)) {
        isInList = true;
        break;
    }
}
if (isInList) {
    //your code here
}
于 2013-06-24T20:09:11.630 回答
1

如果您想查看 是否packageName在 的列表中packageInfo,那么最简单的方法是有另一个循环,将 与您的数组列表中packageNamepackageName每个packageInfo进行比较

我假设您的.equals()方法有效,因为我不知道 PackageInfo 对象是什么

for (PackageInfo pi : arrayList) {
    if (pi.equals(p) {
        //your code here
    }
}
于 2013-06-24T20:02:41.510 回答