1
私は自分のアクションバーにSerchView機能を持っています。それはうまく動作します。私が作成したデータベースから情報を取得します。しかし、私はPopupDropDown
の代わりにListView
の結果をフィルタリングしようとしました。何かが間違っていた。これは私のコードです。フィルタ結果リストビュー内の検索結果
public class SearchViewNaListview extends Activity implements OnQueryTextListener {
public static final String PREFS_NAME = "MyPrefsFile1";
private ListView mListView;
ArrayList<WordDefinition> allWordDefinitions=new ArrayList<WordDefinition>();
DictionaryDatabase DictionaryDatabase;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mListView = (ListView) findViewById(R.id.list);
mListView.setAdapter(new ArrayAdapter <WordDefinition>(getApplicationContext(),android.R.layout.simple_list_item_1,allWordDefinitions));
mListView.setTextFilterEnabled(true);
DictionaryDatabase=new DictionaryDatabase(this);
allWordDefinitions=DictionaryDatabase.getAllWords();
Collections.sort(allWordDefinitions, new CustomComparator());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setSubmitButtonEnabled(true);
searchView.setOnQueryTextListener(this);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onQueryTextChange(String newText)
{
// this is your adapter that will be filtered
if (TextUtils.isEmpty(newText))
{
mListView.clearTextFilter();
}
else
{
mListView.setFilterText(newText.toString());
}
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
// TODO Auto-generated method stub
return false;
}
public class CustomComparator implements Comparator<WordDefinition> { // Para Listar em Ordem Alfabética ListView
@Override
public int compare(WordDefinition p1, WordDefinition p2) {
return p1.word.compareToIgnoreCase(p2.word);
}
}
}
はい、あります。私は実装しました! –