假设我有一个国家的城市列表。
如果用户点击其中之一,我希望显示一个新屏幕,显示该列表元素的详细信息。
此外,该屏幕将有其他按钮(例如:撰写评论,发布图片)。
我该如何实现这一点?
我该如何实现这一点?
City
类应该实现Parcelable
接口。它的toString()
方法应该返回城市的名称(而不仅仅是一个String
)。
当您填充ListView
时,使用ArrayAdapter<City>
而不是ArrayAdapter<String>
(此代码假定城市保存在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));
在您的onItemClick处理程序中,获取所选城市并将其作为额外项添加到用于启动详细信息活动的意图上:
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);
}
});
在你的详情活动中,从意图的额外信息中获取城市:
Bundle bundle = getIntent().getExtras();
City city = bundle.getParcelable("com.example.cities.City");
FragmentActivity
、Activity
还是Activity
中的fragment
? - Roon13