I have a list view with a list item that has multiple text views and a checkbox. Using the search in the search bar, I need to filter the list using a text view.
This is my list that I need to filter by Priority.

This is the method that I used to filter the list from the data adopter.
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconifiedByDefault(false);
SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener()
{
@Override
public boolean onQueryTextChange(String newText)
{
dataAdapter.getFilter().filter(newText);
System.out.println("on text chnge text: "+newText);
return true;
}
@Override
public boolean onQueryTextSubmit(String query)
{
dataAdapter.getFilter().filter(query);
System.out.println("on query submit: "+query);
return true;
}
};
searchView.setOnQueryTextListener(textChangeListener);
return super.onCreateOptionsMenu(menu);
}
I installed dataAdopter in my list, which contains several elements, i.e. 3 text views and a checkbox.
dataAdapter = new MyCustomAdapter(this, R.layout.task_info, taskList);
listView = (ListView) findViewById(R.id.listView1);
listView.setAdapter(dataAdapter);
But when I install the adapter as follows; using only a string array of values, filtering occurs without any problems.
String[] dataArray = new String[] {"High","Medium", "Low", "Medium", "High", "Low","High"};
listView = (ListView) findViewById(R.id.listview);
myAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, dataArray);
listView.setAdapter(myAdapter);
- , ? .