如何查看特定列表视图项的详细数据

Cum*_*tru 9 android android-layout android-listview

假设我有一个国家/地区的城市列表.如果用户单击其中一个,我想要显示一个新屏幕,其中包含该列表元素的详细信息.此外,该屏幕将有其他按钮(例如:写评论,发布图片)

我怎样才能实现这一目标?

Dav*_*rad 17

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));
Run Code Online (Sandbox Code Playgroud)

在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);
    }
});
Run Code Online (Sandbox Code Playgroud)

在您的详细活动中,从意图的附加内容中获取城市:

Bundle bundle = getIntent().getExtras();
City city = bundle.getParcelable("com.example.cities.City");
Run Code Online (Sandbox Code Playgroud)