带搜索过滤器的Android Listview
我正在尝试对Android进行listView搜索。我在ContextChanged上使用SimpleCorsOrAdapter 我发现一个错误适配器无法解决或不是字段。如何解决此错误。我正在使用SimpleCorsOrAdapter。我无法使用adapter.getFilter.filtercs带搜索过滤器的Android Listview,android,Android,我正在尝试对Android进行listView搜索。我在ContextChanged上使用SimpleCorsOrAdapter 我发现一个错误适配器无法解决或不是字段。如何解决此错误。我正在使用SimpleCorsOrAdapter。我无法使用adapter.getFilter.filtercs ListView lv; Cursor cursur1; EditText search ; int textlength=0; ArrayAdapter<String> adapter1
ListView lv;
Cursor cursur1;
EditText search ;
int textlength=0;
ArrayAdapter<String> adapter1;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_main);
search = (EditText) findViewById(R.id.inputSearch);
final String [] from={ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,ContactsContract.CommonDataKinds.Phone.NUMBER,ContactsContract.CommonDataKinds.Phone._ID};
int [] m={android.R.id.text1,android.R.id.text2};
lv=getListView();
lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
cursur1=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null, null, null);
startManagingCursor(cursur1);
@SuppressWarnings("deprecation")
SimpleCursorAdapter adapter=new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursur1, from,m);
setListAdapter(adapter);
search.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
MainActivity.this.adapter.getFilters().filter(cs);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
});
}
@Override
public long getSelectedItemId() {
// TODO Auto-generated method stub
return super.getSelectedItemId();
}
@Override
public int getSelectedItemPosition() {
// TODO Auto-generated method stub
return super.getSelectedItemPosition();
}
}试试这个。。内部添加文本更改侦听器
YourAdapterOrWhateverAdapter adapter = (YourAdapterOrWhateverAdapter) listView.getAdapter();
adapter.getFilter().filter(s);
adapter.notifyDataSetChanged()
您可以使用AutoCompleteTextView,例如-
private static final String[] DATE_RANGE = new String[] { "1 Day",
"2 Days", "3 Days", "6 Months", "1 Year", "Blank" };
AutoCompleteTextView dateRangeTV = (AutoCompleteTextView)findViewById(R.id.tv_date_range);
dateRangeTV.setThreshold(0);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.default_date_range_list, DATE_RANGE);
dateRangeTV.setAdapter(adapter);
键入任何文本,它将显示列表中匹配的文本
有关详细信息,请参见的教程
dateRangeTV.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
dateRangeTV.showDropDown();
return false;
}
});