我正在使用此代码搜索字典中的单词:
词典列表:
final List<String> letters;
letters = getAllLetters();
adapter= new adapterRow(getApplicationContext(), letters);
ListView myList = (ListView)findViewById(R.id.listView);
myList.setAdapter(adapter);
搜索方法:
getMenuInflater().inflate(R.menu.menu_dictionary, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setIconified(true);
searchView.setQueryHint("Search...");
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
Dictionary.this.adapter.getFilter().filter(newText);
return false;
}
});
当我点击搜索图标时,它会打开文本框,我可以在其中输入我的输入,但它不会过滤任何内容。我找不到问题所在。 提前致谢
菜单:
<item android:id="@+id/action_search" android:title="Search"
android:orderInCategory="80" app:actionViewClass="android.support.v7.widget.SearchView"
android:enabled="true" android:icon="@drawable/ic_search_white_24dp"
app:showAsAction="always"
android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" >
</item>
适配器类:
private Context context;
private List <String> listSounds;
public adapterRow(Context context, List<String> friends) {
super(context, R.layout.rowlayout, friends);
this.context=context;
this.listSounds=friends;
}
@Override
public int getCount() {
return listSounds.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return 0;
}
static class ViewHolder {
TextView one;
TextView two;
int position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View customView=convertView;
if(customView==null){
LayoutInflater inflater = LayoutInflater.from(context);
customView=inflater.inflate(R.layout.rowlayout,null);
}
String name = listSounds.get(position);
ViewHolder holder=new ViewHolder();
holder.one = (TextView)customView.findViewById(R.id.textView4);
holder.two = (TextView)customView.findViewById(R.id.textView5);
holder.one.setText(name);
holder.two.setText("Defintion");
答案 0 :(得分:0)
在onQueryTextChange()
if (TextUtils.isEmpty(newText)) {
myList.clearTextFilter();
} else {
myList.getAdapter().getFilter().filter(newText);
}