2013-06-24 9 views
0

Как сделать comapre с помощью arraylist? Бланк формы ниже - мой код. Я просто хочу отфильтровать только те значения, которые присутствуют в базе данных. Я просто хочу, чтобы отфильтровать список массивов на этой линииКак сравнить строку с arraylist

if (arraylist.equals(p.packageName)) 

так показывает только то, что имя пакета, которые являются матчем с базой данных, что мне делать?

DatabaseHandler db; 
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)) 
     { 
     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; 
} 

public class DatabaseHandler extends SQLiteOpenHelper { 
    // All Static variables // Database Version 
    private static final int DATABASE_VERSION = 1; 

    // Database Name 
    private static final String DATABASE_NAME = "contactsManager"; 

    // Contacts table name 
    private static final String TABLE_CONTACTS = "contacts"; 

    // Contacts Table Columns names 
    private static final String KEY_ID = "id"; 
    private static final String KEY_NAME = "name"; 
    //private static final String KEY_PH_NO = "phone_number"; 

    public DatabaseHandler(Context context) { 
     super(context, DATABASE_NAME, null, DATABASE_VERSION); 
    } 

    // Creating Tables 
    @Override 
    public void onCreate(SQLiteDatabase db) { 
     // String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + "("+ 
     // KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT,"+ KEY_PH_NO + " TEXT" + ")"; 

     String CREATE_CONTACTS_TABLE = "CREATE TABLE " + TABLE_CONTACTS + 
      "("+ KEY_ID + " INTEGER PRIMARY KEY," + KEY_NAME + " TEXT" + " UNIQUE " + ")"; 
     db.execSQL(CREATE_CONTACTS_TABLE); 
    } 

    public ArrayList<String> getAllApps() { 
     String selectQuery = "SELECT * FROM "+TABLE_CONTACTS; 
     ArrayList<String> apps = new ArrayList<String>(); 
     SQLiteDatabase db = this.getWritableDatabase(); 
     Cursor cursor = db.rawQuery(selectQuery, null); 
     // looping through all rows and adding to list 
     if (cursor.moveToFirst()) { 
      do { 
       apps.add(cursor.getString(cursor.getColumnIndex(KEY_NAME))); 
      } while (cursor.moveToNext()); 
     } 

     // return list 
     return apps; 
    } 
} 
+0

вот мой полный код http://stackoverflow.com/questions/17280519/android-how-to- match-values-with-database Я просто хочу показать только это имя пакета в списке, которые соответствуют базе данных, что делать ido ??? –

+0

подведение итогов на ваш вопрос. вам нужен только тот пакет, который присутствует в вашей базе данных? – MDMalik

+0

yesssssssssssssssss –

ответ

0

Я просто изменяю несколько бит в списке массивов.

for (int i = 0; i < packs.size(); i++) { 
    PackageInfo p = packs.get(i); 
    ApplicationInfo applicationInfo = p.applicationInfo; 
    String arrayval= arraylist.get(i).toString(); 
    if (arrayval.equals(p.packageName)) 
    { 
    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); 
    } 
} 

Вы пытаетесь сравнить полную arrayList с String, следовательно, является НЕВОЗМОЖНО