Skip to content Skip to sidebar Skip to footer

Filtering On A List

I have a list of Countries and I am using it as a search, so if I am searching for a specific country, once its found the country I want, I selected it from the filtered list. The

Solution 1:

Once for all the time: If you are using AdapterView.setOnItemClickListener, the right way to get clicked item is such implementation:

adapterView.setOnItemClickListener(newAdapterView.OnItemClickListener() {
    @OverridepublicvoidonItemClick(AdapterView<?> parent, View view, int position, long id) {
        Objectitem= parent.getItemAtPosition(position);
    }
});

parent.getItemAtPosition(position) returns Adapter.getItem(position) from your adapter used in AdapterView (with setAdapter)

so for example:

  • if you are using ArrayAdapter<T> you should cast parent.getItemAtPosition(position) to T and use it ...

  • for ArrayAdapter<POJO> use:

    POJO item = (POJO)parent.getItemAtPosition(position);

  • if you are using CursorAdapter

    • Cursor c = (Cursor)parent.getItemAtPosition(position);
  • if you are using SimpleAdapter

    • Map<String, ?> item = ( Map<String, ?>)parent.getItemAtPosition(position);

of course it depends on your Adapter implementation ... so you should remeber that Adapter should return the right object with getItem(position)

As it is stated in the documentation it apply to: ListView, GridView, Spinner, Gallery and other subclasses of AdapterView

So in your case the right way is obviously:

Countriescountry= (Countries)parent.getItemAtPosition(position);

Solution 2:

do this way


add one method in adapter class to get current list

public ArrayList<Countries> GetCurrentListData() {
        return countryArrayList;
    }

CountryAdapterdcAdapter=newCountryAdapter("whatever your perameter");
    listview.setAdapter(dcAdapter);
    lstDoctorsList.setOnItemClickListener(newAdapterView.OnItemClickListener() {
                        @OverridepublicvoidonItemClick(AdapterView<?> parent, View view,
                                                int position, long id) {
                            try {
                                Countriescountries= dcAdapter
                                     .GetCurrentListData().get(position);
                                // get data from countries model class

                            } catch (Exception e) {

                            }
                        }
                    });

Post a Comment for "Filtering On A List"