如何显示列表结果 - searchView

How to display list result - searchView

我想实现实现搜索的最佳方式。在我的 Activity 中,我有两个带有列表结果的选项卡,并且我在工具栏中添加了一个 searchView,用户可以在其中键入他要查找的内容。有没有办法在我的 activity 上面显示列表结果,就像在 whatsapp 中一样?

下面是我的代码,但它基本上是一个 searchView。

   @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_subs, menu);

        MenuItem searchItem = menu.findItem(R.id.action_search);
        SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);

        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){

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

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

        return true;
    }

我已经用这个依赖实现了MaterialSearchView

步骤 1

将依赖项添加到您的 gradle

compile 'com.miguelcatalan:materialsearchview:1.4.0'

步骤 2

将 MaterialSearchView 与工具栏一起添加到您的布局文件

<!— Must be last for right layering display —>
    <FrameLayout
        android:id="@+id/toolbar_container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="@color/theme_primary" />

        <com.miguelcatalan.materialsearchview.MaterialSearchView
            android:id="@+id/search_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    </FrameLayout>

步骤 3

将搜索项添加到菜单文件中:

<item
        android:id="@+id/action_search"
        android:icon="@drawable/ic_action_action_search"
        android:orderInCategory="100"
        android:title="@string/abc_search_hint"
        app:showAsAction="always" />

步骤 4

在onCreateOptionsMenu中添加定义:

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        MenuItem item = menu.findItem(R.id.action_search);
        searchView.setMenuItem(item);

        return true;
    }

步骤 5

设置 OnItemClickListener

 MaterialSearchView searchView = (MaterialSearchView) findViewById(R.id.search_view);
searchView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //Do some magic 
            }
        });