Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有ListView或RecyclerView的情况下使用searchView_Java_Android_Android Linearlayout - Fatal编程技术网

Java 如何在没有ListView或RecyclerView的情况下使用searchView

Java 如何在没有ListView或RecyclerView的情况下使用searchView,java,android,android-linearlayout,Java,Android,Android Linearlayout,我有一个线性布局,里面有三个文本视图。我正在以编程方式扩展一个视图(称为cell),并将数据添加到TextView中。当我运行我的应用程序时,它看起来像一个典型的ListView或RecyclerView。现在,我正在尝试使用searchView。我似乎找不到一个没有ListView或RecyclerView的android中如何使用seachView的例子。有人能告诉我如何在没有ListView或RecyclerView的情况下使用seachView,以及如何使用search过滤我的Linea

我有一个线性布局,里面有三个文本视图。我正在以编程方式扩展一个视图(称为cell),并将数据添加到TextView中。当我运行我的应用程序时,它看起来像一个典型的ListView或RecyclerView。现在,我正在尝试使用searchView。我似乎找不到一个没有ListView或RecyclerView的android中如何使用seachView的例子。有人能告诉我如何在没有ListView或RecyclerView的情况下使用seachView,以及如何使用search过滤我的LinearLayout和其中的文本视图。

假设你有这样的东西

public class MainActivity extends AppCompatActivity {

    // List view
    private LinearLayout lv;

    // Listview Adapter
    ArrayAdapter<String> adapter;

    // Search EditText
    EditText inputSearch;


    // ArrayList for Listview
    ArrayList<HashMap<String, String>> productList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Listview Data
        String products[] = {"your list"};

        lv = (LinearLayout) findViewById(R.id.list_view_linear);
        inputSearch = (EditText) findViewById(R.id.inputSearch);

        // Adding items to listview
        adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);

        for (int i = 0; i < adapter.getCount(); i++) {
            View item = adapter.getView(i, null, null);
            lv.addView(item);
        }


        inputSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
                MainActivity.this.adapter.getFilter().filter(cs);
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                          int arg3) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub
            }
        });
    }
}
Xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- Editext for Search -->
    <EditText android:id="@+id/inputSearch"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

   <LinearLayout
       android:id="@+id/list_view_linear"
       android:orientation="vertical"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content">

   </LinearLayout>



</LinearLayout>


你的逻辑应该是这样的

public class MainActivity extends AppCompatActivity {

    // List view
    private LinearLayout lv;

    // Listview Adapter
    ArrayAdapter<String> adapter;

    // Search EditText
    EditText inputSearch;


    // ArrayList for Listview
    ArrayList<HashMap<String, String>> productList;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Listview Data
        String products[] = {"your list"};

        lv = (LinearLayout) findViewById(R.id.list_view_linear);
        inputSearch = (EditText) findViewById(R.id.inputSearch);

        // Adding items to listview
        adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.product_name, products);

        for (int i = 0; i < adapter.getCount(); i++) {
            View item = adapter.getView(i, null, null);
            lv.addView(item);
        }


        inputSearch.addTextChangedListener(new TextWatcher() {

            @Override
            public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
                // When user changed the Text
                MainActivity.this.adapter.getFilter().filter(cs);
            }

            @Override
            public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
                                          int arg3) {
                // TODO Auto-generated method stub

            }

            @Override
            public void afterTextChanged(Editable arg0) {
                // TODO Auto-generated method stub
            }
        });
    }
}
public类MainActivity扩展了AppCompatActivity{
//列表视图
私人线路布局lv;
//列表视图适配器
阵列适配器;
//搜索编辑文本
编辑文本输入搜索;
//Listview的ArrayList
ArrayList产品列表;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//列表视图数据
字符串产品[]={“您的列表”};
lv=(线性布局)findViewById(R.id.list\u view\u linear);
inputSearch=(EditText)findViewById(R.id.inputSearch);
//向listview添加项目
适配器=新阵列适配器(此,R.layout.list_项,R.id.product_名称,产品);
对于(inti=0;i
SearchView只是一个编辑文本,仅此而已。谢谢您的回答。ArrayAdapter适配器类的外观如何?这些方法是什么:getFilter().filter()?检查这个