而通常大家都會用listView的方法setTextFilterEnabled(true),可是認真觀察你會發現僅是查詢了字首,而其他任何地方有包含卻沒有顯示出來,那要如何將包含輸入的字串的所有項都顯示出來呢?
顯然通過listView.setTextFilterEnabled(true)是不可能做到的,所以下面開始實現這個需求,通過稍微改造,透過不斷的刷新listview的adapter就可以實現了!!
- 首先必須先實例化一個SearchView
- 然後再你的activity實作SearchView.OnQueryTextListener介面
- 就可以覆寫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;
}
沒有留言 :
張貼留言