我想搜索查看添加到我的列表视图 [英] I want to add searchview to my listview

查看:133
本文介绍了我想搜索查看添加到我的列表视图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要搜索查看在MainActivity.java添加到我的列表视图,请,怎么样?

activity_main.xml中

 < RelativeLayout的`的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android`
的xmlns:工具=htt​​p://schemas.android.com/tool​​s
机器人:layout_width =match_parent
机器人:layout_height =match_parent
机器人:方向=横向
工具:上下文=MainActivity。><搜索查看
机器人:layout_width =match_parent
机器人:layout_height =WRAP_CONTENT
机器人:ID =@ + ID / searchView1
机器人:layout_alignParentRight =真
机器人:layout_alignParentTop =真
机器人:queryHint =搜索/>< ListView控件
机器人:ID =@ + ID /列表视图
机器人:layout_below =@ + ID / searchView1
机器人:layout_width =FILL_PARENT
机器人:layout_height =WRAP_CONTENT
/>
< / RelativeLayout的>

MainActivity.java

 公共类MainActivity扩展ListActivity {
    公共无效的onCreate(捆绑冰柱){
        super.onCreate(冰柱);
        // 1.通过环境和数据的自定义适配器
        MyAdapter适配器=新MyAdapter(在此,generateData());
        // 2。 setListAdapter
        setListAdapter(适配器);
    }
    私人的ArrayList<项目> generateData(){
        ArrayList的<项目>项目=新的ArrayList<项目> ();
        items.add(新项目(ITEM1,说明1));
        items.add(新项目(ITEM2,说明2));
        items.add(新项目(项目3,description3));
        返回的物品;
    @覆盖
    公共布尔onCreateOptionsMenu(菜单菜单){
        //充气菜单;如果是present这增加了项目操作栏。
        。getMenuInflater()膨胀(R.menu.menu_main,菜单); //菜单资源,菜单
        返回true;
    }
    公共布尔onOptionsItemSelected(菜单项项){
        开关(item.getItemId()){
            案例R.id.about:
                意向意图=新意图(这一点,about.class);
                startActivity(意向);
                返回true;
        }
        返回super.onOptionsItemSelected(项目);
    }
}


解决方案

创建具有XML布局的ListView 搜索查看如下:

 <?XML版本=1.0编码=UTF-8&GT?;
< LinearLayout中的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:方向=垂直>
    <搜索查看
            机器人:ID =@ + ID / search_view
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_height =WRAP_CONTENT/>
    < ListView控件
            机器人:ID =@ + ID / list_view
            机器人:layout_width =match_parent
            机器人:layout_height =match_parent
            机器人:layout_weight =1/>< / LinearLayout中>

创建下面的Java类的 SearchViewFilterMode.java

 进口android.app.Activity;
进口android.os.Bundle;
进口android.text.TextUtils;
进口android.view.Window;
进口android.widget.ArrayAdapter;
进口android.widget.ListView;
进口android.widget.SearchView;/ **
 *显示可在就地在非图标化模式搜索查看待过滤的清单。
 * /
公共类SearchViewFilterMode扩展活动实现SearchView.OnQueryTextListener {    私人搜索查看mSearchView;
    私人的ListView mListView;    私人最终的String [] = mStrings Cheeses.sCheeseStrings;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState){
        super.onCreate(savedInstanceState);
        。getWindow()requestFeature(Window.FEATURE_ACTION_BAR);        的setContentView(R.layout.searchview_filter);        mSearchView =(搜索查看)findViewById(R.id.search_view);
        mListView =(ListView控件)findViewById(R.id.list_view);
        mListView.setAdapter(新ArrayAdapter<串GT;(这一点,
                android.R.layout.simple_list_item_1,
                mStrings));
        mListView.setTextFilterEnabled(真);
        setupSearchView();
    }    私人无效setupSearchView(){
        mSearchView.setIconifiedByDefault(假);
        mSearchView.setOnQueryTextListener(本);
        mSearchView.setSubmitButtonEnabled(真);
        mSearchView.setQueryHint(搜索这里);
    }    公共布尔onQueryTextChange(字符串newText){
        如果(TextUtils.isEmpty(newText)){
            mListView.clearTextFilter();
        }其他{
            mListView.setFilterText(newText.toString());
        }
        返回true;
    }    公共布尔onQueryTextSubmit(查询字符串){
        返回false;
    }
}

I want to add searchview to my listview in MainActivity.java please,how?

activity_main.xml

<RelativeLayout `xmlns:android="http://schemas.android.com/apk/res/android"`
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context=".MainActivity">

<SearchView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/searchView1"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:queryHint="search"/>

<ListView
android:id="@+id/listview"
android:layout_below="@+id/searchView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</RelativeLayout>

MainActivity.java

public class MainActivity extends ListActivity {
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // 1. pass context and data to the custom adapter
        MyAdapter adapter = new MyAdapter(this, generateData());
        //2. setListAdapter
        setListAdapter(adapter);
    }
    private ArrayList < Item > generateData() {
        ArrayList < Item > items = new ArrayList < Item > ();
        items.add(new Item("item1", "description1"));
        items.add(new Item("item2", "description2"));
        items.add(new Item("item3", "description3"));
        return items;
    }@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_main, menu); //Menu Resource, Menu
        return true;
    }
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.about:
                Intent intent = new Intent(this, about.class);
                startActivity(intent);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

解决方案

Create the XML Layout with ListView and SearchView as follows:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    <SearchView
            android:id="@+id/search_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    <ListView
            android:id="@+id/list_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"/>

</LinearLayout>

Create The Following Java Class As SearchViewFilterMode.java

import android.app.Activity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Window;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SearchView;

/**
 * Shows a list that can be filtered in-place with a SearchView in non-iconified mode.
 */
public class SearchViewFilterMode 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.searchview_filter);

        mSearchView = (SearchView) findViewById(R.id.search_view);
        mListView = (ListView) findViewById(R.id.list_view);
        mListView.setAdapter(new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                mStrings));
        mListView.setTextFilterEnabled(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;
    }
}

这篇关于我想搜索查看添加到我的列表视图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆