如何将值与数据库进行比较?

时间:2013-06-24 16:13:50

标签: android

在我的应用程序中,我从Google Play插入用户访问应用程序包名称并将其保存在数据库中。我只显示来自安装应用程序的应用程序包名称在数据库中。

值成功插入到数据库中,但是当我在此行PlayStoreApps的{​​{1}}类中进行比较时:

if (arraylist.equals(p.packageName))

1 个答案:

答案 0 :(得分:0)

首先:不要使用非通用Lists

loadInstalledApps方法中,您可以使用以下行:

List arraylist = db.getAllApps();

getAllApps返回ArrayList<String>时,您的List应为List<String>类型。

第二:您无法比较列表中的项目,例如您要执行的操作:

if(arraylist.equals(p.packageName)

您实际上是在尝试查看ArrayList对象是否等于String。比较苹果和橘子也不顺利......

第三:在代码中进行比较而不是在SQL中进行比较在性能上确实很慢,并且应该可以避免,尤其是在移动操作系统上,因为这会浪费内存和CPU。

如果你真的想在代码中进行比较,你可以这样做:

if(arraylist.contains(p.packageName)) {
    // Do something
    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);
}

但我不推荐这条道路。