2016-06-18 10 views
2

アクションバーに「android.support.v7.widget.SearchView」を実装して、一部のpdfファイルを検索しました。 検索に複数の文字を挿入すると、候補のリストがperferctlyで表示されます。しかし、私が1文字しか入力していないときは、提案を入力する機能が呼び出されていますが、提案は表示されません。 あなたはその行動を変える方法を知っていますか?1人のキャラクターだけを入力するときに表示される提案を得るには?アクションバーでSearchViewを作成するには、最初の文字からの提案を教えてください。

これは、単にメニュー内でsearchviewを定義するところです。私の活動に

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/pdf_menu_search_item" 
    android:icon="@mipmap/ic_search_white_24dp" 
    android:title="Suche" 
    app:actionViewClass="android.support.v7.widget.SearchView" 
    app:showAsAction="always"/></menu> 

、次のコードが実装されている1つだけの文字で動作していない enter image description here

private static final String[] SUGGESTIONS = { 
     "Amsterdam","Berlin","Rome" 
}; 
private SimpleCursorAdapter mAdapter; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_contextual_actionbar, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    return super.onOptionsItemSelected(item); 
} 

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    final SearchView mSearchView; 
    mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.pdf_menu_search_item)); 
    final String[] from = new String[] {"cityName"}; 
    final int[] to = new int[] {android.R.id.text1}; 
    mAdapter = new SimpleCursorAdapter(Startseite.this, 
      android.R.layout.simple_list_item_1, 
      null, 
      from, 
      to, 
      CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); 

    mSearchView.setSuggestionsAdapter(mAdapter); 
    mSearchView.setOnSuggestionListener(new SearchView.OnSuggestionListener() { 
     @Override 
     public boolean onSuggestionClick(int position) { 
      return true; 
     } 

     @Override 
     public boolean onSuggestionSelect(int position) { 
      return true; 
     } 
    }); 

    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 

      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      populateAdapter(newText); 
      return true; 
     } 
    }); 
    return super.onPrepareOptionsMenu(menu); 
} 
// You must implements your logic to get data using OrmLite 
private void populateAdapter(String query) { 
    final MatrixCursor c = new MatrixCursor(new String[]{ BaseColumns._ID, "cityName" }); 
    for (int i=0; i<SUGGESTIONS.length; i++) { 
     if (SUGGESTIONS[i].toLowerCase().startsWith(query.toLowerCase())) 
     { c.addRow(new Object[] {i, SUGGESTIONS[i]}); } 
    } 
    mAdapter.changeCursor(c); 
    mAdapter.notifyDataSetChanged(); 
} 

は、複数の文字を使用した作業 enter image description here

してください誰もが持っていますどのようにそれを修正するアイデア?

答えて

0

私はちょうど答えを見つけました。 あなたは(私のような)AppCompatActivityを使用している場合は、そのようなsearchviewしきい値を設定することができます

AutoCompleteTextView searchAutoCompleteTextView = (AutoCompleteTextView) mSearchView.findViewById(getResources().getIdentifier("search_src_text", "id", getPackageName())); 
searchAutoCompleteTextView.setThreshold(1); 

今すぐ検索・提案が上の最初の文字から表示されますが。 多分他の人には役に立ちます:)

関連する問題