Android Action de la Barre de Recherche: Comment faire pour filtrer la liste par la propriété d'un élément de la liste?

J'ai une vue de liste avec un élément de la liste, qui a peu de texte et une case à cocher. À l'aide de la barre d'action de recherche, j'ai besoin de filtrer la liste par un affichage du texte de la valeur.

C'est ma liste de qui j'ai besoin de filtrer par "Priorité".

Android Action de la Barre de Recherche: Comment faire pour filtrer la liste par la propriété d'un élément de la liste?

C'est la méthode que j'ai utilisé pour filtrer la liste à partir des données adoptant.

@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) 
            {
                //this is your adapter that will be filtered
                dataAdapter.getFilter().filter(newText);
                System.out.println("on text chnge text: "+newText);
                return true;
            }
            @Override
            public boolean onQueryTextSubmit(String query) 
            {
                //this is your adapter that will be filtered
                dataAdapter.getFilter().filter(query);
                System.out.println("on query submit: "+query);
                return true;
            }
        };
        searchView.setOnQueryTextListener(textChangeListener);

        return super.onCreateOptionsMenu(menu);

}

J'ai mis le dataAdopter à mon listview qui contient quelques éléments, j'.e 3 texte de vues et d'une case à cocher.

//create an ArrayAdaptar from the String Array
    dataAdapter = new MyCustomAdapter(this, R.layout.task_info, taskList);
    listView = (ListView) findViewById(R.id.listView1);
//Assign adapter to ListView
    listView.setAdapter(dataAdapter);

Mais quand j'ai mis la carte de la manière suivante; en utilisant simplement un tableau de chaîne de valeurs, le filtrage se passe sans aucun problème

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);

Est il une méthode que je peux utiliser pour filtrer la liste par la valeur d'un affichage de texte à l'intérieur d'un élément de la liste? Ou est-il une autre méthode pour mettre en œuvre les fonctionnalités souhaitées.

U peut fournir tout le code, parce que dans le code ci-dessus, où est la logique de la recherche basée sur textview?
la logique de la recherche basée sur textview est ce que je suis réellement du mal à mettre en œuvre. Dans le code où j'ai utilisé le tableau de chaîne, le filtrage se fait en utilisant les mêmes méthodes à l'aide de l'adoptant.

OriginalL'auteur Ishara Amarasekera | 2014-07-03