在ActionBar中搜索自动完成

时间:2013-09-11 17:23:21

标签: android search android-actionbar android-2.2-froyo

我在Action Bar的Android 2.2中实现了简单的搜索框。现在我想添加自动完成我的搜索框。我想显示来自我服务器的提示,例如:

  1. 用户写“It”
  2. 我从框中收到“It”并将其发送到我的服务器
  3. 服务器响应:“Item1”,“Item12”,“Item2”
  4. App显示用户“Item1”,“Item12”,“Item2” - 此处有问题
  5. 用户写“Item1”
  6. 服务器响应“Item1”,“Item12”
  7. 我从搜索框接收文本并将其发送到我的服务器。服务器响应数据,但我不知道如何在搜索框下方实现列表。

    我想在不使用Sherlock的情况下实现它,但它应该适用于Android 2.2。

    我的代码:

    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main_activity_actions, menu);
    
        MenuItem searchItem = menu.findItem(R.id.action_search);
        mSearchView = (SearchView) MenuItemCompat.getActionView(searchItem);
        setupSearchView(searchItem);
    
         return super.onCreateOptionsMenu(menu);
       }
    
    @Override
    public boolean onQueryTextChange(String arg0) {
    
        // 1. get text from search box and send to my server
        // 2. my server response and sent data
        // 3. response from server should be display below search box
        Log.d("onQueryTextChange", arg0);
        return false;
    }
    
    @Override
    public boolean onQueryTextSubmit(String arg0) {
    
        Log.d("onQueryTextSubmit", arg0);
        return false;
    }
    

    这是可以工作的函数,但是如何更改它以显示onQueryTextChange()的结果?

    private void setupSearchView(MenuItem searchItem) {
            Log.d("setupSearchView", "enter");
            if (isAlwaysExpanded()) {
                mSearchView.setIconifiedByDefault(false);
            } else {
                searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
                        | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
            }
            SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
            if (searchManager != null) {
                List<SearchableInfo> searchables =searchManager.getSearchablesInGlobalSearch();
                SearchableInfo info =searchManager.getSearchableInfo(getComponentName());
                for (SearchableInfo inf : searchables) {
                    if (inf.getSuggestAuthority() != null
                            && inf.getSuggestAuthority().startsWith("applications")){
                        info = inf;
                    }
                }
                mSearchView.setSearchableInfo(info);
            }
            mSearchView.setOnQueryTextListener(this);
        }
    

    任何人都可以帮助我吗?

0 个答案:

没有答案