@Override
  public void onStart() {
    super.onStart();

    // Do we have an application list already? is it valid?
    if (appList == null || !prefs.getIsApplicationListCacheValid()) {
      // Either we don't have an app list, or it isn't valid
      if (!prefs.getIsApplicationListCacheValid()) {
        // The app list isn't valid, so we need to rebuild it
        rebuildApplicationList();
      } else {
        loadApplicationObjects();
        loadApplicationList();
      }
    } else {
      if (this.appListAdapter == null) {
        this.appListAdapter =
            new AppListAdapter(context, R.layout.application_list_row, this.appList);
      }
      listView.setAdapter(appListAdapter);
    }

    listView.setOnItemClickListener(
        new OnItemClickListener() {

          @Override
          public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            callback.onApplicationSelected(appList.get(position));
          }
        });

    listView.setOnItemLongClickListener(
        new OnItemLongClickListener() {

          @Override
          public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            showPopupMenu(view, position);
            return true;
          }
        });
  }
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // get handle to the application preferences
    prefs = new Preferences(context);

    // get the most recently selected option from the 'App Type' list, and set as current
    currentAppType = prefs.getLastAppListType();

    /*
     * If the database version has changed, we will need to rebuild the application cache
     */
    if (prefs.getLastRunDatabaseVersion() != DBInterface.DBHelper.DATABASE_VERSION) {
      Log.d(
          "PDroidAlternative",
          "Defined database version has changed since last run; we need to rebuild the cache");
      // this will force the application list to be rebuilt from the application package manager
      prefs.setIsApplicationListCacheValid(false);
      prefs.setLastRunDatabaseVersion(DBInterface.DBHelper.DATABASE_VERSION);
    }

    setHasOptionsMenu(true);
  }