Le site City
Klasse sollte implementieren Parcelable
. Seine toString()
Methode sollte den Namen der Stadt zurückgeben. (Anstatt die Stadt einfach als String
.)
Wenn Sie Ihre ListView auffüllen, verwenden Sie eine ArrayAdapter<City>
anstelle eines ArrayAdapter<String>
(dieser Code geht davon aus, dass die Städte in List<City> list
) :
City[] cities = new City[list.size()];
list.toArray(cities);
mListView = (ListView) findViewById(R.id.citylist);
mListView.setAdapter(new ArrayAdapter<City>(this,
R.layout.listitem, cities));
Holen Sie sich in Ihrem onItemClick-Handler die ausgewählte Stadt und fügen Sie sie als Extra zu der Absicht hinzu, die Sie zum Starten Ihrer Detailaktivität verwenden:
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);
}
});
Holen Sie sich in Ihrer Detailaktivität die Stadt aus den Extras auf dem Vorsatz:
Bundle bundle = getIntent().getExtras();
City city = bundle.getParcelable("com.example.cities.City");