title: Android ListView from SQLitedatabase with clickable items to delete
body: <p>I am trying to populate a list of values by querying the SQLite database that I creaed for my Android app. When the user clicks the button (DROP), the activity changes to ListViewDelete that should have the list of all the rows from a Select query based on an ID. I am clueless as to how do I proceed with it. I tried something from a tutorial but my app failed. Here is my code:</p>
  
  <p>--MySQLitehelper.java----</p>
  
  <pre><code>public class MySQLitehelper {
  
  //public static final String TABLE_COMMENTS = "comments";
    public static final String COLUMN_ID = "GWid";
    public static final String COLUMN_DATE = "DateGWU";
    public static final String COLUMN_LOCATION = "location";
    public static final String COLUMN_TIME = "time";
  
    public static final String TABLE_NAME = "UPDTable";
  
    private static final String DATABASE_NAME = "UPDdb_version6";
    private static final int DATABASE_VERSION = 6;
  
    private final Context context;
    GetSet getset = new GetSet();
    public void GetIdForGwid(GetSet get)
    {
       getset=get; 
    }
  
    // Database creation sql statement
    private static final String DATABASE_CREATE = "CREATE TABLE " + TABLE_NAME +
                                  " (" +COLUMN_ID+ " integer," + COLUMN_DATE + " VARCHAR," +
                                  COLUMN_LOCATION+" VARCHAR," +COLUMN_TIME +" VARCHAR);";
  
  //  private static final String DATABASE_INSERT = "INSERT INTO " +TABLE_NAME +
  //                                              " Values (47688507,'DEC-07-2012','MARVIN 203','20:00');";
  
    private static final String DATABASE_INSERT = "INSERT INTO " +TABLE_NAME +  " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +
            COLUMN_LOCATION+" ," +COLUMN_TIME +" )"  +
                            " Values (47688507,'DEC-07-2012','MARVIN 203','20:00');";
  
  
  
    DatabaseHelper dbhelper;
    SQLiteDatabase db;
  
  
  
  
   public MySQLitehelper(Context ctx)
    {
        this.context = ctx;
        dbhelper = new DatabaseHelper(ctx);
    }
  
  
  
  private static class DatabaseHelper extends SQLiteOpenHelper {
  
       public DatabaseHelper(Context context)
       {
           super(context,DATABASE_NAME, null,DATABASE_VERSION);
       }
  
   @Override
  public void onCreate(SQLiteDatabase db) {
      // TODO Auto-generated method stub
      db.execSQL(DATABASE_CREATE);            //execute create table
      db.execSQL(DATABASE_INSERT);            //execute insert query
      db.execSQL("INSERT INTO " +TABLE_NAME +  " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +COLUMN_LOCATION+" ," +COLUMN_TIME +" )" +" Values (47688507,'DEC-22-2012','OLD MAIN','23:00');");
      db.execSQL("INSERT INTO " +TABLE_NAME +  " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +COLUMN_LOCATION+" ," +COLUMN_TIME +" )" +" Values (1234567,'DEC-14-2012','FUNGER','12:00');");
      db.execSQL("INSERT INTO " +TABLE_NAME +  " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +COLUMN_LOCATION+" ," +COLUMN_TIME +" )" +" Values (7654321,'DEC-29-2012','GELMAN','22:00');");
      db.execSQL("INSERT INTO " +TABLE_NAME +  " (" +COLUMN_ID+ " ," + COLUMN_DATE + "," +COLUMN_LOCATION+" ," +COLUMN_TIME +" )" +" Values (47688507,'DEC-12-2012','IVORY','23:00');");
   }
  
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
      // TODO Auto-generated method stub
      Log.w(MySQLitehelper.class.getName(),
              "Upgrading database from version " + oldVersion + " to "
                  + newVersion + ", which will destroy all old data");
          db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
          onCreate(db);
      }
  }
  
  
  // open the DB
   public MySQLitehelper open() throws SQLException
   {
      System.out.println("Inside open function");
       db = dbhelper.getWritableDatabase();
      return this;
   }
  
   public void close()
   {
       dbhelper.close();
   }
  
  
  
   public void insertRecord(long gwid, String date, String location, String time)
       {
             ContentValues initialValues = new ContentValues();
            initialValues.put(COLUMN_ID, gwid);
            initialValues.put(COLUMN_DATE, date);
            initialValues.put(COLUMN_LOCATION, location);
            initialValues.put(COLUMN_TIME, time);
            db.insert(TABLE_NAME, null, initialValues);
       }
  
  public Cursor getAllrows()      //function to get all rows in the DB. Testing initially.
  {
  
       Cursor cur = db.rawQuery("SELECT * FROM "+TABLE_NAME, null);
       return cur;
  }
  
  public Cursor getRecord(long getid) throws SQLException
  {
          Cursor mCursor =
          db.query(true, TABLE_NAME, new String[] {COLUMN_ID,
          COLUMN_DATE, COLUMN_LOCATION, COLUMN_TIME},
          COLUMN_ID + "= "+getid, null, null, null, null, null);   //HARDCODED. Please make it dynamic
          if (mCursor != null) 
          {
              mCursor.moveToFirst();
          }
   return mCursor;
  }
  
  }
  </code></pre>
  
  <p>--SelectOptions.java-- Here the user clicks on the DROP button (btnDrop) and then control goes to the activity ListViewDelete.java which is further below</p>
  
  <pre><code>public class SelectOptions extends Activity {
  
  protected static final String EXTRA_MESSAGE = "This is a the GWID";
  Button btnView, btnDrop, btnLocation;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_select_options);
  
  
      final Intent intent = getIntent();
      //String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
      //long getid = intent.getLongExtra(MainActivity.EXTRA_MESSAGE, defaultValue)
              final Bundle extras = getIntent().getExtras(); 
  
         if (extras != null) {
             long getid = extras.getLong(MainActivity.EXTRA_MESSAGE,0);
  
          }
  
      btnView = (Button)findViewById(R.id.btnViewShift);
      btnDrop = (Button)findViewById(R.id.btnDropShift);
      btnLocation = (Button)findViewById(R.id.btnViewLocation);
  
  
      final GetSet gwid = new GetSet();
  /*   ArrayList&lt;String&gt; results = new ArrayList&lt;String&gt;();
          SQLiteDatabase sampleDB = null;
          final MySQLitehelper db = null;
  
          final Dialog diag = null;
          final TextView txt = null;   */
      final MySQLitehelper helper = new MySQLitehelper(this);
  
  
  
      btnView.setOnClickListener(new View.OnClickListener() {
  
          @Override
          public void onClick(View arg0) {
  
              helper.open();
              Cursor c = helper.getRecord(extras.getLong(MainActivity.EXTRA_MESSAGE));
          //  List&lt;String&gt; list = new ArrayList&lt;String&gt;();
           //    Cursor cursor = helper.query(constantValues.TABLE_NAME, new String[] { "emailid"},null, null, null, null, null); // here emailid is the field name in the table and contantValues.TABLE_NAME is the table name 
              if (c.moveToFirst()) {
               do {
  
                   System.out.println("In Do while");
                   DisplayRecord(c); 
  
               } while (c.moveToNext());
            }
              helper.close(); 
              System.out.println("Out of Do");                
  
          }  
      });
  
  
      btnLocation.setOnClickListener(new View.OnClickListener() {
  
          public void onClick(View v) {
              // TODO Auto-generated method stub
  
              Intent intent2 = new Intent(SelectOptions.this, MapViewActivity.class);
              //startActivity(intent2);
              startActivity(intent2);
  
  
          }
      });
  
      btnDrop.setOnClickListener(new View.OnClickListener() {
  
          @Override
          public void onClick(View v) {
              // TODO Auto-generated method stub
              Intent intent3 = new Intent(SelectOptions.this, ListViewDelete.class);
              //startActivity(intent2);
              intent3.putExtra(EXTRA_MESSAGE, extras.getLong(MainActivity.EXTRA_MESSAGE));
              startActivity(intent3);
  
          }
      });
  }
  
  
  
  
  public void DisplayRecord(Cursor c)
  {
      System.out.println("In side toast display function");
      Toast.makeText(this, "id: "+c.getString(0)+"\n"+
              "Date: "+c.getString(1)+"\n"+
              "Location: "+c.getString(2)+"\n"+
              "Time: "+c.getString(3), Toast.LENGTH_LONG).show();
  }
  
  
  }
  </code></pre>
  
  <p>--ListViewDelete.java</p>
  
  <pre><code>public class ListViewDelete extends ListActivity {
  
  
  String []list =  {"A","B","C","D"};    //#I just tried to populate a sample list#
  
  
  
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      //setContentView(R.layout.activity_list_view_delete);
  
      final Intent intent = getIntent();
      final Bundle extras = getIntent().getExtras();    //gets the GWID
  
      final MySQLitehelper dbhelper = new MySQLitehelper(this);
  
      setListAdapter(new ArrayAdapter&lt;String&gt;(this, android.R.layout.simple_list_item_1,list));
      Cursor c = dbhelper.getRecord(extras.getLong(MainActivity.EXTRA_MESSAGE));
          if (c.moveToFirst())
          {
              do {
  
                  System.out.println("In Do while");
                  // DisplayRecord(c); 
                  //list[]
  
                  } while (c.moveToNext());
          }
      dbhelper.close();
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.activity_list_view_delete, menu);
      return true;
  }
  
  }
  </code></pre>
  
  <p>The above class needs to be restructured and I don't seem to be on track. Any help would be appreciated. Thanks</p>