如何将搜索添加到操作栏中

时间:2015-10-17 20:50:25

标签: android android-activity android-actionbar searchview android-search

知道如何在Android上的操作栏中添加 searchview ? 我已经尝试了很多例子,我在google上搜索这么多时间,但是我找不到解决问题的方法...我已经找到了如何将搜索引入动作栏但在那之后我无法使用我的搜索...我可以打开它。

这是活动:

public class SearchActivity extends Activity implements SearchView.OnQueryTextListener {


    private SearchView mSearchView;
    private ListView mListView;
    private final String[] mStrings = Cheeses.sCheeseStrings;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
        setContentView(R.layout.search_activity);

        mSearchView = (SearchView) findViewById(R.id.search_view);
        mListView = (ListView) findViewById(R.id.list_view);
        mListView.setAdapter(new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, mStrings));
        mListView.setTextFilterEnabled(true);
        ActionBar actionBar = getActionBar();

        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        actionBar.setDisplayShowTitleEnabled(true);
        actionBar.setTitle("");
        actionBar.setCustomView(mSearchView);
        mSearchView.setQuery("", true);
        mSearchView.setFocusable(true);
        mSearchView.setIconified(false);
        actionBar.setDisplayHomeAsUpEnabled(true);
        setupSearchView();
    }

    private void setupSearchView() {
        mSearchView.setIconifiedByDefault(false);
        mSearchView.setOnQueryTextListener(this);
        mSearchView.setSubmitButtonEnabled(true);
        mSearchView.setQueryHint("Search Here");
    }

    public boolean onQueryTextChange(String newText) {
        if (TextUtils.isEmpty(newText)) {
            mListView.clearTextFilter();
        } else {
            mListView.setFilterText(newText.toString());
        }
        return true;
    }

    public boolean onQueryTextSubmit(String query) {
        return false;
    }
}

在这里,我的result搜索栏操作栏作为个人。 所以如果有人知道如何解决这个问题请告诉我,我将非常感谢能帮助我。

1 个答案:

答案 0 :(得分:0)

重写onCreateOptionsMenu方法以使用搜索设置操作栏。此代码段可以为您提供帮助。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my_list, menu);
        final MenuItem searchItem = menu.findItem(R.id.action_search);
        final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {

                //Fetch the data remotely
                FetchData(query);

                //Reset the SearchView
                searchView.clearFocus();
                searchView.setQuery("", false);
                searchView.setIconified(true);
                searchItem.collapseActionView();

                //Set Activity title to search query
                MainActivity.this.setTitle(query);

                return true;
            }

            @Override
            public boolean onQueryTextChange(String newText) {
                return false;
            }
        });
        return true;
    } 

希望这有帮助。