Android SearchView建议不';一个字符不能工作
我的Android SearchView建议不';一个字符不能工作,android,searchview,Android,Searchview,我的SearchView建议有问题,当我在SearchView中写一个字符时,建议没有出现。 但是当我在我的SearchView的EditText中写两个字符时,建议就会出现 因此,我希望当我在我的SearchView的EditText中写一个字符时,我的建议已经出现了,我该怎么办 来自MainActivity的我的代码: private SearchView mSearchView; private SimpleCursorAdapter mAdapter; private ArrayList
SearchView
建议有问题,当我在SearchView
中写一个字符时,建议没有出现。
但是当我在我的SearchView
的EditText
中写两个字符时,建议就会出现
因此,我希望当我在我的SearchView
的EditText
中写一个字符时,我的建议已经出现了,我该怎么办
来自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;
}
private SearchView mSearchView;
私人简易程序或适应程序;
私有数组列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mList=新的ArrayList();
列表添加(“测试1”);
列表添加(“测试2”);
列表添加(“测试3”);
列表添加(“测试4”);
列表添加(“测试5”);
列表添加(“测试6”);
列表添加(“测试7”);
列表添加(“测试8”);
列表添加(“测试9”);
列表添加(“测试10”);
ListView ListView=(ListView)findViewById(android.R.id.list);
ArrayAdapter=新的ArrayAdapter(这是android.R.layout.simple_list_item_1,mList);
setAdapter(适配器);
mAdapter=new SimpleCursorAdapter(getBaseContext(),R.layout.suggestion,null,新字符串[]{”“},新int[]{R.id.suggestion\u textView},CursorAdapter.FLAG\u REGISTER\u CONTENT\u OBSERVER);
}
@凌驾
公共布尔onCreateOptions菜单(菜单)
{
super.onCreateOptions菜单(菜单);
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。主菜单,菜单);
MenuItem searchItem=menu.findItem(R.id.menu\u search);
mSearchView=(SearchView)searchItem.getActionView();
mSearchView.setSuggestionAdapter(mAdapter);
//麦克里克
mSearchView.setOnSuggestionListener(新的SearchView.OnSuggestionListener()
{
@凌驾
公共布尔值onSuggestionSelect(整数位置)
{
返回false;
}
@凌驾
公共布尔onSuggestionClick(整数位置)
{
//仅用于测试
完成();
返回false;
}
});
mSearchView.setOnQueryTextListener(新的SearchView.OnQueryTextListener()
{
@凌驾
公共布尔值onQueryTextSubmit(字符串s)
{
返回false;
}
@凌驾
公共布尔值onQueryTextChange(字符串s)
{
final MatrixCursor c=新MatrixCursor(新字符串[]{BaseColumns.\u ID,“});
对于(int i=0;i
我自己找到了一个解决方案。它不干净,但可以用。
我已调试到SearchView
,然后从SearchView
中找到了AutoCompleteTextView
的ID。然后,我将AutoCompleteTextView
的阈值从2设置为1。现在它起作用了
@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();
// Solution
int autoCompleteTextViewID = getResources().getIdentifier("android:id/search_src_text", null, null);
AutoCompleteTextView searchAutoCompleteTextView = (AutoCompleteTextView) mSearchView.findViewById(autoCompleteTextViewID);
searchAutoCompleteTextView.setThreshold(1);
///////////
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++)
{
if (mList.get(i).toLowerCase().startsWith(s.toLowerCase()))
{
c.addRow(new Object[]{i, mList.get(i)});
}
}
mAdapter.changeCursor(c);
return false;
}
});
return true;
}
@覆盖
公共布尔onCreateOptions菜单(菜单)
{
super.onCreateOptions菜单(菜单);
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。主菜单,菜单);
MenuItem searchItem=menu.findItem(R.id.menu\u search);
mSearchView=(SearchView)searchItem.getActionView();
//解决方案
int autoCompleteTextViewID=getResources().getIdentifier(“android:id/search\u src\u text”,null,null);
AutoCompleteTextView searchAutoCompleteTextView=(AutoCompleteTextView)mSearchView.findViewById(autoCompleteTextViewID);
searchAutoCompleteTextView.setThreshold(1);
///////////
mSearchView.setSuggestionAdapter(mAdapter);
//麦克里克
mSearchView.setOnSuggestionListener(新的SearchView.OnSuggestionListener()
{
@凌驾
公共布尔值onSuggestionSelect(整数位置)
{
返回false;
}
@凌驾
公共布尔onSuggestionClick(整数位置)
{
//仅用于测试
完成();
返回false;
}
});
mSearchView.setOnQueryTextListener(新的SearchView.OnQueryTextListener()
{
@凌驾
公共布尔值onQueryTextSubmit(字符串s)
{
返回false;
}
@凌驾
公共布尔值onQueryTextChange(字符串s)
{
final MatrixCursor c=新MatrixCursor(新字符串[]{BaseColumns.\u ID,“});
对于(int i=0;i
如果你在使用appcompat,id应该是getResources().getIdentifier(“search\u src\u text”,“id”,getPackageName())
如果你在使用appcompat,你也可以直接引用R.id.search\u src\u text
@user3747780你是我最喜欢的人