Filtering On A List
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 castparent.getItemAtPosition(position)toTand use it ...for
ArrayAdapter<POJO>use:POJO item = (POJO)parent.getItemAtPosition(position);if you are using
CursorAdapterCursor c = (Cursor)parent.getItemAtPosition(position);
if you are using
SimpleAdapterMap<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"