【问题标题】:Search in ListView with Edittext for in使用 Edittext 在 ListView 中搜索 in
【发布时间】:2017-11-21 06:49:06
【问题描述】:

我创建了一个包含多个项目的列表视图。每行,输入样式为数字的 Edittext 和 Textview 显示列表视图中所有 editext 的总值。我还在上面创建了一个搜索框。我想根据列表的特定字段实现搜索功能。我怎样才能做到这一点?任何帮助将不胜感激。 像这样:

【问题讨论】:

  • 您要搜索哪些值?发布您的代码
  • 在左侧 Textview 中搜索值。我的英文不好,希望你明白我的意思

标签: android listview


【解决方案1】:

试试这个

searchView.setOnEditorActionListener(new EditText.OnEditorActionListener() {
    @Override
    public boolean onEditorAction(TextView v, int actionId,
                                  KeyEvent event) {
        return true;
    }
});
addTextChangeListener();

现在创建这个方法

    private void addTextChangeListener() {
searchView.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence query, int start, int before, int count) {

        query = query.toString().trim().toLowerCase();

        final ArrayList<CityDataModel> filteredList = new ArrayList<>();



        final CharSequence finalQuery = query;
        new Thread(new Runnable() {
            @Override
            public void run() {

                // Clear the filter list
                filteredList.clear();

                // If there is no search value, then add all original list items to filter list
                if (TextUtils.isEmpty(finalQuery)) {

                    filteredList.addAll(cities);

                } else {
                    // Iterate in the original List and add it to filter list...
                    for (CityDataModel item : cities) {
                        if (item.getCity_name().toLowerCase().contains(finalQuery.toString().toLowerCase())
                                ) {
                            // Adding Matched items
                            filteredList.add(item);
                        }
                    }
                }

                // Set on UI Thread
                ((Activity) context).runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        // Notify the List that the DataSet has changed...
                        adapter = new SearchCityAdapter(SearchCityClass.this, filteredList);
                        recyclerSearchCity.setAdapter(adapter);
                    }
                });

            }
        }).start();


    }

    @Override
    public void afterTextChanged(Editable s) {

    }
});

}

【讨论】:

    【解决方案2】:

    Edit text change time 它会发生这种方法。这是我的样本。你可以修改为你自己。

     et_search.addTextChangedListener(new TextWatcher() {
                                    @Override
                                    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                                    }
    
                                    @Override
                                    public void onTextChanged(CharSequence s, int start, int before, int count) {
    //                                    professional_add_List.contains(s);
                                    }
    
                                    @Override
                                    public void afterTextChanged(Editable s) {
    //                                    String text = et_search.getText().toString().toLowerCase(Locale.getDefault());
                                        addpartnerAdapter.getFilter().filter(s.toString());
    
                                        if (addpartnerAdapter.isEmpty()) {
                                            lst_professional.setVisibility(View.GONE);
                                            txt_identifier.setVisibility(View.VISIBLE);
                                        } else {
                                            lst_professional.setVisibility(View.VISIBLE);
                                            txt_identifier.setVisibility(View.GONE);
                                        }
                                    }
                                });
    

    【讨论】:

      猜你喜欢
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 2016-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多