Android SearchView 实现一边输入一边搜索功能

Android 自动的组件SearchView 在实现自动搜索有很好的支持,这是前段时间做的一个项目里面需要实现的功能在此做一个简单的总结。

SearchView的布局

<SearchView
       android:id="@+id/actionbar_right_edittext"
       android:layout_width="210dp"
       android:layout_height="40dp"
       android:imeOptions="actionSearch"
       android:textColor="@color/white"
       android:textSize="@dimen/film_gridview_average" />

实力画SearchView并设置相关属性

        mSearchView = (SearchView) findViewById(R.id.actionbar_right_edittext);
        //设置某人搜索按钮是否在输入框内,false表示不在,true表示在
        mSearchView.setIconifiedByDefault(false);
        mSearchView.setFocusable(true);
        mSearchView.clearFocus();

        mSearchView.setOnCloseListener(this);
        mSearchView.setOnQueryTextListener(this);

SearchView的监听事件

    @Override   
    public boolean onQueryTextSubmit(String query) {

                //获取软键盘对象
                InputMethodManager imm = 
                (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            if (imm != null) {
                imm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0);
            }
            /**
             * 在这里进行你对输入条件的查询操作
             * 
             * 
             */
            Fragment fragment = SearchListFragment.newInstance("关键字搜索", query,
                    sql(query));

            FragmentManager fm = getFragmentManager();
            FragmentTransaction transaction = fm.beginTransaction();
            transaction.replace(R.id.main_fragment, fragment);
            transaction
                    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
            transaction.addToBackStack("listFrament");
            transaction.commit();
            mListView.setVisibility(View.GONE);

            mSearchView.clearFocus();
        }
        return true;
    }

    @Override
    public boolean onQueryTextChange(String queryText) {
            /**
             * 在这里编写你一边输入一边查询的操作
             * 
             * 
             */
        AppConfig.getInstance().setSearchStr(queryText);
        list = null;
        if (!queryText.equals("")) {
            String sql = "select * from localMovie where movieChar like '%"
                    + queryText + "%' or movieName like '%" + queryText
                    + "%' order by playCount ";
            list = dao.select(sql);
            if (list != null || list.size() != 0) {
                mAdapter.loadNewData(list);
                mListView.setVisibility(View.VISIBLE);
            }
        } else {
            mListView.setVisibility(View.GONE);
        }
        return true;
    }


//关闭搜索框的操作
    @Override
    public boolean onClose() {
        AppConfig.getInstance().setSearchStr(null);
        if (list != null) {
            list.clear();
        }
        mListView.setVisibility(View.GONE);
        return true;
    }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值