title: How to display specific data from a sqlite database in a listview with a condition like 'where'?
body: <p>I made an application with an SQLite database. I want to show the data in a listview, but I don't want to show all the data from the database, but just some data. So, I want to add a condition. I only want to show the data where string 'dag' is 'maandag'. 
  Can anyone help me?</p>
  
  <p>This is the code from my DatabaseHelper, where the database is created:</p>
  
  <pre><code>package com.persoonlijk.rooster.test2;
  
  import android.content.Context;
  import android.database.Cursor;
  import android.database.sqlite.SQLiteDatabase;
  import android.database.sqlite.SQLiteOpenHelper;
  import android.database.sqlite.SQLiteStatement;
  import java.util.ArrayList;
  import java.util.List;
  
  //A helper class to manage database creation and version management. 
  public class DataManipulator
  {
  //Database attributes
  private static final String DATABASE_NAME = "mydatabase.db";
  static final String TABLE_NAME = null;
  private static final int DATABASE_VERSION = 12;
  
  //Table attributes
  public static final String KEY_ROWID = "id";
  public static final String KEY_DAG = "dag";
  public static final String KEY_UUR = "uur";
  public static final String KEY_VAK = "vak";
  public static final String KEY_LOKAAL = "lokaal";
  
  private static Context context;
  static SQLiteDatabase db;
  
  private SQLiteStatement insertStmt;
  private static final String INSERT = "insert into " + TABLE_NAME + " (dag,uur,vak,lokaal) values (?,?,?,?)";
  public DataManipulator(Context context) {
  DataManipulator.context = context;
  OpenHelper openHelper = new OpenHelper(DataManipulator.context);
  DataManipulator.db = openHelper.getWritableDatabase();
  this.insertStmt = DataManipulator.db.compileStatement(INSERT);
  }
  
  public long insert(String dag,String uur,String vak,String lokaal) {
  this.insertStmt.bindString(1, dag);
  this.insertStmt.bindString(2, uur);
  this.insertStmt.bindString(3, vak);
  this.insertStmt.bindString(4, lokaal);
  return this.insertStmt.executeInsert();
  }
  
  public void deleteAll() {
  db.delete(TABLE_NAME, null, null);
  }
  
  public List&lt;String[]&gt; selectAll()
  {
  List&lt;String[]&gt; list = new ArrayList&lt;String[]&gt;();
  Cursor cursor = db.query(TABLE_NAME, new String[] { "id","dag","uur","vak","lokaal" }, null, null, null, null, "dag asc");
  int x=0;
  if (cursor.moveToFirst()) {
     do {
      String[] b1=new String[]{cursor.getString(0),cursor.getString(1),cursor.getString(2),
  cursor.getString(3),cursor.getString(4)};
      list.add(b1);
      x=x+1;
     } while (cursor.moveToNext());
   }
  if (cursor != null &amp;&amp; !cursor.isClosed()) {
     cursor.close();
  }
  cursor.close();
  return list;
  }
  
  public boolean delete(long id) {
      return db.delete(TABLE_NAME, KEY_ROWID + "=" + id, null) &gt; 0;
          }
  
   private static class OpenHelper extends SQLiteOpenHelper {
   OpenHelper(Context context) {
       super(context, DATABASE_NAME, null, DATABASE_VERSION);
  }
  
  
  @Override
  public void onCreate(SQLiteDatabase db) {
       db.execSQL("CREATE TABLE " + TABLE_NAME + " (id INTEGER PRIMARY KEY, dag TEXT, uur TEXT, vak TEXT, lokaal TEXT)");
  }
  
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
      {
       db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
       onCreate(db);
  }
  }
  
  }
  </code></pre>
  
  <p>This is the code from the Activity where I want to display the specific data. Right now, all the data from the database is displayed.</p>
  
  <pre><code>package com.persoonlijk.rooster.test2;
  
  import java.util.ArrayList;
  import java.util.List;
  
  import android.app.ListActivity;
  import android.content.Intent;
  import android.os.Bundle;
  import android.util.Log;
  import android.view.ContextMenu;
  import android.view.Menu;
  import android.view.MenuItem;
  import android.view.View;
  import android.widget.AdapterView;
  import android.widget.ArrayAdapter;
  import android.widget.ListView;
  import android.widget.TextView;
  
  public class RoosterMaandag extends ListActivity{   
  
    TextView selection;
    public int idToModify;
    DataManipulator dm;
  
    List&lt;String[]&gt; list = new ArrayList&lt;String[]&gt;();
    List&lt;String[]&gt; names2 =null ;
    String[] stg1;
  
    /** Called when the activity is first created. */
    //zorgt voor het overzicht van de gegevens uit de database
    @Override
    public void onCreate(Bundle savedInstanceState){
  
      super.onCreate(savedInstanceState);
      setContentView(R.layout.rooster);
  
      dm = new DataManipulator(this);
      names2 = dm.selectAll();
  
      stg1=new String[names2.size()];
      int x=0;
      String stg;
  
      for (String[] dag : names2) {
      stg = dag[1]+" - "+dag[2]+ " - "+dag[3]+" - "+dag[4];
      stg1[x]=stg;
      x++;
      }
  
      ArrayAdapter&lt;String&gt; adapter = new ArrayAdapter&lt;String&gt;(this,android.R.layout.simple_list_item_1,stg1);
      this.setListAdapter(adapter);
      selection=(TextView)findViewById(R.id.selection);
  
  }  
  
   //menuknoppen
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
     menu.add(Menu.NONE, 0, 0, "Voeg gegevens toe");
     menu.add(Menu.NONE, 1, 1, "Verwijder gegevens");
     return super.onCreateOptionsMenu(menu);
   }
  
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
         case 0:
             startActivity(new Intent(this, SaveData.class));
         return true;
         case 1:
             startActivity(new Intent(this, VerwijderData.class));
         return true;
  
     }
     return false;
    }
  
   }
  </code></pre>
  
  <p>Please let me know when my question isn't clear enough. I really hope someone can help me!</p>
  
  <p>I added this code in my DataManipulator.java:</p>
  
  <pre><code>    public List&lt;String[]&gt; selectSome(String arg) {
      String[] columns = new String[] { "id", "dag", "uur", "vak", "lokaal" };
      String[] selectionArgs = {arg};
      Cursor cursor = db.query(TABLE_NAME, columns, "dag = ?", selectionArgs, null, null, "dag asc");
  
      List&lt;String[]&gt; list = new ArrayList&lt;String[]&gt;(cursor.getCount());
      while (cursor.moveToNext()) {
          String[] b1 = new String[] { cursor.getString(0),
                  cursor.getString(1), cursor.getString(2),
                  cursor.getString(3), cursor.getString(4) };
          list.add(b1);
      }
      cursor.close();
      return list;
  }
  </code></pre>
  
  <p>and this code in my RoosterMaandag.java:</p>
  
  <pre><code> public void onCreate(Bundle savedInstanceState){
   ....
   dm.selectSome("maandag");
   ....
   }
  </code></pre>