How to view detailed data of a specific list view item

落爺英雄遲暮 提交于 2019-12-03 17:47:58

问题


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 screen will have others buttons ( eg: Write Review, Post Picture )

How can i achieve this ?


回答1:


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<City> instead of an ArrayAdapter<String> (this code assumes that the cities are kept 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));

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");


来源:https://stackoverflow.com/questions/5299324/how-to-view-detailed-data-of-a-specific-list-view-item

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!