2013-06-24 3 views
0

ниже мой код я следую этой ссылке how to compare values with database values и настраиваю свой код, я просто хочу отображать только имя этого имени в базе данных, которое пользователь вставляет в базу данных, но показывает мою ошибку в вспомогательном классе в getAllApps метод метод GetString (INT) в типе курсора не применяется для аргументов (String)Как сравнить значения вставки вставки базы данных с другими значениями

import android.database.sqlite.SQLiteOpenHelper; 


    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); 
} 

// Upgrading database 
@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // Drop older table if existed 
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_CONTACTS); 

    // Create tables again 
    onCreate(db); 
} 

/** 
* All CRUD(Create, Read, Update, Delete) Operations 
*/ 

// Adding new contact 
void addContact(Contact contact) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_NAME, contact.getName()); // Contact Name 
// values.put(KEY_PH_NO, contact.getPhoneNumber()); // Contact Phone 

    // Inserting Row 
    db.insert(TABLE_CONTACTS, null, values); 
    db.close(); // Closing database connection 
} 

// Getting single contact 
Contact getContact(int id) { 
    SQLiteDatabase db = this.getReadableDatabase(); 

    Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID, 
      KEY_NAME }, KEY_ID + "=?", 
      new String[] { String.valueOf(id) }, null, null, null, 
     null); 
    if (cursor != null) 
     cursor.moveToFirst(); 

    Contact contact = new Contact(Integer.parseInt(cursor.getString(0)), 
      cursor.getString(1)); 
    // return contact 
    return contact; 
} 

// Getting All Contacts 
public List<Contact> getAllContacts() { 
    List<Contact> contactList = new ArrayList<Contact>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_CONTACTS; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Contact contact = new Contact(); 
      contact.setID(Integer.parseInt(cursor.getString(0))); 
      contact.setName(cursor.getString(1)); 
      //contact.setPhoneNumber(cursor.getString(2)); 
      // Adding contact to list 
      contactList.add(contact); 
     } while (cursor.moveToNext()); 
    } 

    // return contact list 
    return contactList; 
} 




// Updating single contact 
public int updateContact(Contact contact) { 
    SQLiteDatabase db = this.getWritableDatabase(); 

    ContentValues values = new ContentValues(); 
    values.put(KEY_NAME, contact.getName()); 
// values.put(KEY_PH_NO, contact.getPhoneNumber()); 

    // updating row 
    return db.update(TABLE_CONTACTS, values, KEY_ID + " = ?", 
      new String[] { String.valueOf(contact.getID()) }); 
} 

// Deleting single contact 
public void deleteContact(Contact contact) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.delete(TABLE_CONTACTS, KEY_ID + " = ?", 
      new String[] { String.valueOf(contact.getID()) }); 
    db.close(); 
} 




public int deleteContact() { 
    try { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     return db.delete(TABLE_CONTACTS, null, null); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return 0; 
} 

// Getting contacts Count 
public int getContactsCount() { 
    String countQuery = "SELECT * FROM " + TABLE_CONTACTS; 
    SQLiteDatabase db = this.getReadableDatabase(); 
    Cursor cursor = db.rawQuery(countQuery, null); 
    cursor.close(); 

    // return count 
    return cursor.getCount(); 
} 



public ArrayList<String> getAllApps() { 

    String selectQuery = "SELECT * FROM table"; 
    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(KEY_NAME)); 
     } while (cursor.moveToNext()); 
    } 

    // return list 
    return apps; 
} 







    } 

И Моя деятельность Класс

public class PlayStoreApps extends Activity implements 
     OnItemClickListener { 
/* whether or not to include system apps */ 
private static final boolean INCLUDE_SYSTEM_APPS = false; 
DatabaseHandler db; 
private ListView mAppsList; 
private AppListAdapter mAdapter; 
private List<App> mApps; 
String APKFilePath = "mnt/sdcard/foldername/"; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.games); 
    db = new DatabaseHandler(this); 
    Button AddMore = (Button) findViewById(R.id.AddMore); 
    AddMore.setOnClickListener(new OnClickListener() { 
     public void onClick(View view) { 

      // Intent intent = new Intent(FunActivity.this, 
      // SdcardAPkMgr.class); 
      // startActivity(intent); 
     } 
    }); 

    mAppsList = (ListView) findViewById(R.id.appslist); 
    mAppsList.setOnItemClickListener(this); 

    mApps = loadInstalledApps(INCLUDE_SYSTEM_APPS); 

    mAdapter = new AppListAdapter(getApplicationContext()); 
    mAdapter.setListItems(mApps); 
    mAppsList.setAdapter(mAdapter); 

    new LoadIconsTask().execute(mApps.toArray(new App[] {})); 
} 

public void onItemClick(AdapterView<?> parent, View view, int position, 
     long id) { 

    final App app = (App) parent.getItemAtPosition(position); 

    AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    String msg = app.getTitle() 
      + "\n\n" 
      + "Version " 
      + app.getVersionName() 
      + " (" 
      + app.getVersionCode() 
      + ")" 
      + (app.getDescription() != null ? ("\n\n" + app 
        .getDescription()) : ""); 

    builder.setMessage(msg) 
      .setCancelable(true) 
      .setTitle(app.getTitle()) 
      .setIcon(mAdapter.getIcons().get(app.getPackageName())) 
      .setPositiveButton("Launch", 
        new DialogInterface.OnClickListener() { 
         public void 
     onClick(DialogInterface dialog, int id) { 
          // start the app by 

    invoking its launch intent 
          Intent i = 
     getPackageManager() 

     .getLaunchIntentForPackage(
              app.getPackageName()); 
          try { 
           if (i != null) { 

    startActivity(i); 
           } else { 
            i = new 
    Intent(app.getPackageName()); 

    startActivity(i); 
           } 
          } catch 
     (ActivityNotFoundException err) { 

    Toast.makeText(PlayStoreApps.this, 

    "Error launching app", 

     Toast.LENGTH_SHORT).show(); 
          } 
         } 
        }) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void 
     onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 
    AlertDialog dialog = builder.create(); 
    dialog.show(); 
} 

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); // 
      PackageManager.GET_META_DATA 

    for (int i = 0; i < packs.size(); i++) { 
     PackageInfo p = packs.get(i); 
     ApplicationInfo applicationInfo = p.applicationInfo; 
     String name = packageManager.getApplicationLabel(applicationInfo) 
       .toString(); 

     List arraylist = db.getAllApps(); 

     if (arraylist.contains(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; 
} 

/** 
* An asynchronous task to load the icons of the installed applications. 
*/ 
private class LoadIconsTask extends AsyncTask<App, Void, Void> { 
    @Override 
    protected Void doInBackground(App... apps) { 

     Map<String, Drawable> icons = new HashMap<String, Drawable>(); 
     PackageManager manager = getApplicationContext() 
       .getPackageManager(); 

     for (App app : apps) { 
      String pkgName = app.getPackageName(); 
      Drawable ico = null; 
      try { 
       Intent i = 
     manager.getLaunchIntentForPackage(pkgName); 
       if (i != null) { 
        ico = manager.getActivityIcon(i); 
       } 
      } catch (NameNotFoundException e) { 
       Log.e("ERROR", "Unable to find icon for package '" 
         + pkgName + "': " + 
     e.getMessage()); 
      } 
      icons.put(app.getPackageName(), ico); 
     } 
     mAdapter.setIcons(icons); 

     return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     mAdapter.notifyDataSetChanged(); 
    } 
} 


     } 
+0

я просто хочу, чтобы отобразить только то будет приложения namme в виде списка, которые присутствуют в базе данных –

ответ

0
The method getString(int) in the type Cursor is not applicable for the arguments (String) 

Это утверждение говорит все это ... Вы должны пройти целое число параметров для cursor.getString метода ..

Предположим, что вы хотите получить первые данные столбцов затем передать cursor.getString (1) .. так далее ..

В вашем случае проверьте положение столбца KEY_NAME .. и положение столбца целого столбца ....

Кроме того, у вас есть оператор String selectQuery = "SELECT * FROM table"; .. у вас есть таблица с именем table .. если не будет выбрано исключение как таблица не существует ...

Вы должны попробовать String selectQuery = "SELECT * FROM "+table_name;

Надеется, что это помогает ...

0

метод изменения getAllApps() в

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; 
} 

и положить
List arraylist = db.getAllApps();
перед циклом