Sag*_*hta 1 android android-spinner
我有一个场景,我想在用户键入内容时过滤数据。我目前正在使用 Spinner,但我想要的是用户应该能够在 Spinner 本身上写入数据,并且数据在运行时被过滤。我找不到与我想要的类似的东西。
类似于下图的东西(它是 ASP.net 中使用的 RadcomboBox 示例)。
当您在 EditText 框中键入时,您可以使用 Edittext 和 Listview 实现这一点,因为 Listview 将刷新数据。考虑如下代码中的初始ArrayList<String> Citylist加载CityAdapter。
CityAdapter adapter = new CityAdapter(getActivity(), R.layout.customlayout, Citylist );
listview.setAdapter(adapter);   
当您输入 EditText 框时,列表视图将刷新数据 - 使用以下代码
     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;
                }
| 归档时间: | 
 | 
| 查看次数: | 8650 次 | 
| 最近记录: |