我有一个场景,我想在用户键入内容时过滤数据。 我目前正在使用Spinner,但我想要的是用户应该能够在Spinner本身上写入数据,并在运行时过滤数据。我无法找到与我想要的相似的东西。为Spinner添加过滤器并过滤Spinner本身的数据
类似于下面的图像(这是在asp.net中使用RadcomboBox的一个例子)。
我有一个场景,我想在用户键入内容时过滤数据。 我目前正在使用Spinner,但我想要的是用户应该能够在Spinner本身上写入数据,并在运行时过滤数据。我无法找到与我想要的相似的东西。为Spinner添加过滤器并过滤Spinner本身的数据
类似于下面的图像(这是在asp.net中使用RadcomboBox的一个例子)。
可以实现,使用EDITTEXT和ListView
当你在盒子的EditText按照该列表视图键入将refesh数据。 考虑初始值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();
}
}
});
列表视图过滤功能低于 -
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;
}
我想到了这种方法,但listview包含大量的数据,最初的listview将会被填充,并且会占用大量的UI空间,所以为了避免我在考虑使用微调或其他方法。 –
而不是微调显示按钮,当用户点击按钮时,您可以显示自定义的alerDialog与包含EditText和Listview的自定义布局。 –
好吧,我会尝试。 –
其更好地使用_AutoCompleteTextView_ –
[AutoCompleteTextView]( http://developer.android.com/reference/android/widget/AutoCompleteTextView.html) –
使用AutoCompleteTextView将是更好的方法。 在这种情况下,您可以使用afterTextChangedListener,并使用当时的文本过滤来自填充下拉列表的数据。 – Anshul