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你是我最喜欢的人