我有一個場景,我想在用戶鍵入內容時過濾數據。 我目前正在使用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