Let\'s say i have a list of cities from a country. If the user clicks one of them, i want a new screen to be displayed, with the detailed infos for that list element. Also, that
The City class should implement Parcelable. Its toString() method should return the name of the city. (Rather than simply having the city as a String.)
When you populate your ListView, use an ArrayAdapter instead of an ArrayAdapter (this code assumes that the cities are kept in List):
City[] cities = new City[list.size()];
list.toArray(cities);
mListView = (ListView) findViewById(R.id.citylist);
mListView.setAdapter(new ArrayAdapter(this,
R.layout.listitem, cities));
In your onItemClick handler, get the selected city and add it as an extra on the intent you use to launch your details activity:
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> a,
View v, int position, long id) {
City city = (City) a.getItemAtPosition(position);
Intent intent = new Intent(v.getContext(), DetailsActivity.class);
intent.putExtra("com.example.cities.City", city);
startActivity(intent);
}
});
In your details activity, get the city from the extras on the intent:
Bundle bundle = getIntent().getExtras();
City city = bundle.getParcelable("com.example.cities.City");