android - 为微调器添加过滤器并过滤微调器本身的数据

标签 android android-spinner

我有一个场景,我想在用户键入内容时过滤数据。 我目前正在使用微调器,但我想要的是用户应该能够在微调器本身上写入数据,并在运行时过滤数据。我找不到与我想要的类似的东西。

类似于下图(它是在 ASP.net 中使用的 RadcomboBox 的示例)。

enter image description here

最佳答案

您可以使用 Edittext 和 Listview 来实现
当您在 EditText 框中键入时,Listview 将刷新数据。 考虑初始 ArrayList<String> Citylist载入 CityAdapter就像下面的代码。

CityAdapter adapter = new CityAdapter(getActivity(), R.layout.customlayout, Citylist );
listview.setAdapter(adapter);   

当您在 EditText Box 中键入时, ListView 将刷新数据 - 使用以下代码

     et_search.addTextChangedListener(new TextWatcher() {

                  public void afterTextChanged(Editable s) {
                  }

                  public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                  }

                  public void onTextChanged(CharSequence s, int start, int before, int count) {

                      if(!s.toString().equals(""))
                      {
                          filterlist = new ArrayList<String>();

                          filterlist=  getFilter(s.toString());
                           CityAdapter adapter = new CityAdapter(getActivity(), R.layout.customlayout, filterlist);
                          listview.setAdapter(adapter); 


                          adapter.notifyDataSetChanged();
                      }
                      else
                      {
                           CityAdapter adapter = new CityAdapter(getActivity(), R.layout.customlayout, Citylist);
                          listview.setAdapter(adapter); 
                          adapter.notifyDataSetChanged();
                      }

                  }
                  });

Listview 过滤函数如下 -

 public  ArrayList<String> getFilter(CharSequence charSequence)
        {
         ArrayList<String> filterResultsData = new ArrayList<String>();;
                 if(charSequence == null || charSequence.length() == 0)
                    {
                        return null;
                    }
                    else
                    {


                        for(String data : Citylist)
                        {
                            //In this loop, you'll filter through originalData and compare each item to charSequence.
                            //If you find a match, add it to your new ArrayList
                            //I'm not sure how you're going to do comparison, so you'll need to fill out this conditional
                            if(data.toLowerCase().contains(charSequence))
                            {
                                filterResultsData.add(data);
                            }
                        }            

                    }

                    return filterResultsData;
                }

关于android - 为微调器添加过滤器并过滤微调器本身的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36169944/

相关文章:

Android自定义迁移Sqlcipher从3到4

Android 蓝牙在方向改变后崩溃

android - 将 Spannable 与 String.format() 结合使用

android - 以 xml 或以编程方式为 spinner 提供数组?

android - Intent.ACTION_CALL 启动 skype 通话而不是 "normal"电话

java - 正则表达式:我想使用正则表达式来操作/更改特定短语。

java - 如何使用Java在Android中生成每个项目具有不同背景颜色的微调器?

java - Android onItemSelected Spinner 未激活

android - 使用 Sqlite 将数据从 Edittext 输入填充到 Spinner Display

Android MaterialDialog 微调器