Advertisement
tehbrosta

Untitled

Nov 17th, 2011
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.08 KB | None | 0 0
  1. public class SearchableActivity extends ListActivity {
  2.  
  3.     @Override
  4.     public void onCreate(Bundle savedInstanceState) {
  5.         super.onCreate(savedInstanceState);
  6.         setContentView(R.layout.search);
  7.  
  8.         ListView lv = getListView();
  9.  
  10.         DBHelper helper=new DBHelper(this);
  11.        
  12.         Intent intent=getIntent();
  13.         // if the activity is created from search
  14.             if(intent.getAction().equals(Intent.ACTION_SEARCH)){
  15.                 // get search query
  16.                 String query=intent.getStringExtra(SearchManager.QUERY);
  17.                
  18.                 Log.v("QUERY", query);
  19.                 ArrayList<String> items = helper.getNamesSearch(query);
  20.                
  21.                 //bind the list
  22.                 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,items);
  23.                 lv.setAdapter(adapter);
  24.             }
  25.         //activity created normally
  26.         else{
  27.             ArrayList<String> items = helper.getNames();
  28.             ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,items);
  29.             lv.setAdapter(adapter);
  30.         }
  31.         helper.close();
  32.     }
  33. }
  34.  
  35. <?xml version="1.0" encoding="utf-8"?>
  36. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  37.     android:orientation="vertical"
  38.     android:layout_width="fill_parent"
  39.     android:layout_height="fill_parent"
  40.     >
  41. <ListView
  42. android:layout_width="fill_parent"
  43.     android:layout_height="fill_parent"
  44.     android:id="@+id/list"/>
  45. </LinearLayout>
  46.  
  47. <?xml version="1.0" encoding="utf-8"?>
  48. <searchable xmlns:android="http://schemas.android.com/apk/res/android"
  49.     android:label="@string/app_name"
  50.     android:hint="@string/search_hint">
  51. </searchable>
  52.  
  53. public class DBHelper extends SQLiteOpenHelper {
  54.  
  55.     public DBHelper(Context context) {
  56.         super(context, "DemoDB", null, 1);
  57.     }
  58.  
  59.     @Override
  60.     public void onCreate(SQLiteDatabase db) {
  61.         StringBuilder builder=new StringBuilder();
  62.         // countries table
  63.         builder.append("CREATE TABLE Countries ");
  64.         builder.append("(_id INTEGER PRIMARY KEY AUTOINCREMENT,");
  65.         builder.append("NAME TEXT) ");
  66.         db.execSQL(builder.toString());
  67.         // Names table
  68.         // Virtual table for full text search
  69.         builder.setLength(0);
  70.         builder.append("CREATE VIRTUAL TABLE NAMES USING FTS3");
  71.         builder.append("(");
  72.         builder.append("name TEXT) ");
  73.         db.execSQL(builder.toString());
  74.         builder=new StringBuilder();
  75.  
  76.         //dummy  data
  77.         InsertData(db);
  78.  
  79.     }
  80.  
  81.      void InsertData(SQLiteDatabase db)
  82.      {
  83.          ContentValues cv=new ContentValues();
  84.             cv.put("NAME","USA");
  85.             db.insert("Countries", "NAME", cv);
  86.             cv.put("NAME","UK");
  87.             db.insert("Countries", "NAME", cv);
  88.             cv.put("NAME","Spain");
  89.             db.insert("Countries", "NAME", cv);
  90.             cv.put("NAME","ITALY");
  91.             db.insert("Countries", "NAME", cv);
  92.             cv.put("NAME","Germany");
  93.             db.insert("Countries", "NAME", cv);
  94.  
  95.              cv=new ContentValues();
  96.                 cv.put("name","John");
  97.                 db.insert("NAMES", "name", cv);
  98.                 cv.put("name","Jack");
  99.                 db.insert("NAMES", "name", cv);
  100.                 cv.put("name","Ann");
  101.                 db.insert("NAMES", "name", cv);
  102.                 cv.put("name","Adam");
  103.                 db.insert("NAMES", "name", cv);
  104.                 cv.put("name","Sarah");
  105.                 db.insert("NAMES", "name", cv);
  106.  
  107.      }
  108.  
  109.     @Override
  110.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  111.         // TODO Auto-generated method stub
  112.  
  113.     }
  114.    
  115.     /**
  116.      * Return all countries
  117.      * @return
  118.      * @return
  119.      */
  120.     public ArrayList<String> getCountries(){
  121.         ArrayList<String> countries=new ArrayList<String>();
  122.         SQLiteDatabase db=this.getReadableDatabase();
  123.         Cursor c=db.rawQuery("select * from Countries", null);
  124.         while(c.moveToNext()){
  125.             String country=c.getString(1);
  126.             countries.add(country);
  127.         }
  128.         c.close();
  129.         return countries;
  130.     }
  131. /**
  132.      * Return all names
  133.  * @return
  134.      * @return
  135.      */
  136.  
  137.     public ArrayList<String> getNames(){
  138.         ArrayList<String> names=new ArrayList<String>();
  139.         Cursor c=this.getReadableDatabase().rawQuery("select * FROM Names", null);
  140.         while(c.moveToNext()){
  141.             String name=c.getString(0);
  142.             Log.v("getName", name);
  143.             names.add(name);
  144.         }
  145.         c.close();
  146.         return names;
  147.     }
  148.    
  149.     /**
  150.      * Return all countries based on a search string
  151.      * @return
  152.      * @return
  153.      */
  154.     public ArrayList<String> getCountriesSearch(String query){
  155.         ArrayList<String> countries=new ArrayList<String>();
  156.         SQLiteDatabase db=this.getReadableDatabase();
  157.         Cursor c=db.rawQuery("select * from Countries where NAME LIKE '%"+query+"%'", null);
  158.         while(c.moveToNext()){
  159.             String country=c.getString(1);
  160.             countries.add(country);
  161.         }
  162.         c.close();
  163.         return countries;
  164.     }
  165. /**
  166.      * Return all names based on a search string
  167.      * we use the MATCH keyword to make use of the full text search
  168.  * @return
  169.      * @return
  170.      */
  171.     public ArrayList<String> getNamesSearch(String query){
  172.         ArrayList<String> names=new ArrayList<String>();
  173.         Cursor c=this.getReadableDatabase().rawQuery("select * FROM Names WHERE name MATCH '"+query+"'", null);
  174.         while(c.moveToNext()){
  175.             String name=c.getString(0);
  176.             Log.v("getName", name);
  177.             names.add(name);
  178.         }
  179.         c.close();
  180.         return names;
  181.     }
  182. }
  183.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement