How to view detailed data of a specific list view item

后端 未结 1 1899
礼貌的吻别
礼貌的吻别 2021-02-08 19:39

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

相关标签:
1条回答
  • 2021-02-08 20:26

    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");
    
    0 讨论(0)
提交回复
热议问题