格式化

廣告

廣告2

2011年12月24日 星期六

[Android SDK特色教學] SearchView搜尋listview內的任何字元

searchView一個為使用者提供輸入查詢和提交請求給搜尋提供者的用戶界面元件,顯示查詢建議或結果列表!本篇介紹一下將searchView加入到自定義標題欄佈局中,結合listview實現搜索。

而通常大家都會用listView的方法setTextFilterEnabled(true),可是認真觀察你會發現僅是查詢了字首,而其他任何地方有包含卻沒有顯示出來,那要如何將包含輸入的字串的所有項都顯示出來呢?

顯然通過listView.setTextFilterEnabled(true)是不可能做到的,所以下面開始實現這個需求,通過稍微改造,透過不斷的刷新listview的adapter就可以實現了!!
  1. 首先必須先實例化一個SearchView
  2. 然後再你的activity實作SearchView.OnQueryTextListener介面
  3. 就可以覆寫onQueryTextChange()方法,類似用以下的程式碼



    @Override
    public boolean onQueryTextChange(String name)
    {
 StringBuilder ssBuilder=new StringBuilder(name);
 ssBuilder.insert(0, "%");
 ssBuilder.append("%");
 name=ssBuilder.toString();
 SQLHelper db = new SQLHelper(MainActivity.this);
 Cursor cursor = db.query("select * from food where address like ? or Name like ?", new String[]
 { name, name });
 ArrayList<HashMap<String, Object>> users = new ArrayList<HashMap<String, Object>>();
 while (cursor.moveToNext())
 {
     HashMap<String, Object> h2 = new HashMap<String, Object>();
     h2.put("Name", cursor.getString(16));
     h2.put("address", cursor.getString(14));
     h2.put("img", cursor.getString(9));
     users.add(h2);
 }
 UBaseAdapter adapter = new UBaseAdapter(MainActivity.this, users, listview);
 listview.setAdapter(adapter);
 db.closeAll();
 cursor.close();
 return false;
    }

沒有留言 :