Ho un problema con il mio suggerimento SearchView
, quando scrivo un carattere nello SearchView
il suggerimento non viene. Ma quando scrivo due caratteri nello EditText
del mio SearchView
verrà il suggerimento.SearchView Suggerimento non funziona con un carattere
Quindi voglio che il mio suggerimento venga già quando scrivo un carattere nello EditText
del mio SearchView
, cosa posso fare?
My Code da MainActivity:
private SearchView mSearchView;
private SimpleCursorAdapter mAdapter;
private ArrayList<String> mList;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mList = new ArrayList<String>();
mList.add("Test 1");
mList.add("Test 2");
mList.add("Test 3");
mList.add("Test 4");
mList.add("Test 5");
mList.add("Test 6");
mList.add("Test 7");
mList.add("Test 8");
mList.add("Test 9");
mList.add("Test 10");
ListView listView = (ListView) findViewById(android.R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mList);
listView.setAdapter(adapter);
mAdapter = new SimpleCursorAdapter(getBaseContext(), R.layout.suggestion, null, new String[] {""}, new int[] {R.id.suggestion_textView}, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
MenuItem searchItem = menu.findItem(R.id.menu_search);
mSearchView = (SearchView) searchItem.getActionView();
mSearchView.setSuggestionsAdapter(mAdapter);
// onItemClick
mSearchView.setOnSuggestionListener(new SearchView.OnSuggestionListener()
{
@Override
public boolean onSuggestionSelect(int position)
{
return false;
}
@Override
public boolean onSuggestionClick(int position)
{
// Only for Test
finish();
return false;
}
});
mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextSubmit(String s)
{
return false;
}
@Override
public boolean onQueryTextChange(String s)
{
final MatrixCursor c = new MatrixCursor(new String[] { BaseColumns._ID, "" });
for (int i=0; i < mList.size(); i++)
{
c.addRow(new Object[] {i, mList.get(i)});
}
mAdapter.changeCursor(c);
return false;
}
});
return true;
}
se si sta utilizzando appcompat l'id dovrebbe essere 'getResources(). GetIdentifier ("search_src_text", "id", getPackageName())' – user1256821
Se stai usando appcompat è anche possibile fare riferimento direttamente il ' R.id.search_src_text' – Moritz
@ user3747780 Sei la mia persona preferita – Nazerke