Android 行动栏中的SearchView
我有一个ArrayList,其中包含从SQLite数据库获取的数据。该ArrayList是通过ArrayAdapter添加到ListView的。它可以工作。问题是当我使用SearchView筛选列表时。它不起作用。 这是我的代码:Android 行动栏中的SearchView,android,android-listview,searchview,Android,Android Listview,Searchview,我有一个ArrayList,其中包含从SQLite数据库获取的数据。该ArrayList是通过ArrayAdapter添加到ListView的。它可以工作。问题是当我使用SearchView筛选列表时。它不起作用。 这是我的代码: public class ListActivity extends Activity implements ActionBar.OnNavigationListener { List<InforTask> list =new ArrayList<
public class ListActivity extends Activity implements ActionBar.OnNavigationListener {
List<InforTask> list =new ArrayList<InforTask>();
ListAdapter adapter;
ListView lv;
Menu mnOption = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
list = dbHelp.getAllInfor();
adapter = new ListAdapter(ListActivity.this,R.layout.view_list_item,list);
lv = (ListView) findViewById(R.id.contact_list);
lv.setAdapter(adapter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.list, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
mnOption = menu;
mSearchView = (SearchView) searchItem.getActionView();
mSearchView
.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
adapter.getFilter().filter(newText.toString());
return false;
}
});
return true;
}
公共类ListActivity扩展活动实现ActionBar.OnNavigationListener{
列表=新的ArrayList();
列表适配器;
ListView lv;
菜单选项=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_列表);
list=dbHelp.getAllin();
adapter=新的ListAdapter(ListActivity.this,R.layout.view\u list\u item,list);
lv=(ListView)findViewById(R.id.contact_list);
低压设置适配器(适配器);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.list,menu);
MenuItem searchItem=menu.findItem(R.id.action\u search);
mnOption=菜单;
mSearchView=(SearchView)searchItem.getActionView();
mSearchView
.setOnQueryTextListener(新的SearchView.OnQueryTextListener(){
@凌驾
公共布尔值onQueryTextSubmit(字符串查询){
//TODO自动生成的方法存根
返回false;
}
@凌驾
公共布尔onQueryTextChange(字符串newText){
adapter.getFilter().filter(newText.toString());
返回false;
}
});
返回true;
}
}
//
“它不工作”不足以继续。请参阅。可能是adapter.notifyDataSetChange()?tks all。我修改了我的代码,并能够使其工作。我在这里找到它:
<item
android:id="@+id/action_search"
android:actionViewClass="android.widget.SearchView"
android:showAsAction="always"
android:title="Search..."/>