2011-03-14 5 views
9

한 나라의 도시 목록을 가지고 있다고 가정 해 봅시다. 사용자가 그 중 하나를 클릭하면 해당 목록 요소에 대한 자세한 정보와 함께 새 화면이 표시되기를 원합니다. 또한 해당 화면에는 다른 버튼이 있습니다 (예 : Write Review, Post Picture)특정 목록보기 항목의 세부 데이터를 보는 방법

어떻게해야합니까?

+0

지금까지 무엇을 시도 했습니까? 보이는 lika 간단한 구현 [listview] (http://developer.android.com/reference/android/widget/ListView.html) – Adinia

+0

조금 더 열심히 생각, 그리고 내가 선택한 도시 객체를 저장할 것 내 응용 프로그램 하위 클래스, 그리고 클릭 할 때 새로운 의도를 시작할 때, 해당 액티비티는 내 애플리케이션 서브 클래스에 저장된 객체의 데이터를 사용합니다. – Cumatru

답변

17

City 클래스는 Parcelable을 구현해야합니다. 그 toString() 메소드는 도시 이름을 반환해야합니다. (.보다는 단순히 String으로 도시를 가진)

당신이 당신의 ListView를 채울 때, 대신 ArrayAdapter<String>ArrayAdapter<City>을 사용 (이 코드은 도시 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"); 
+0

좋은 해결책. 감사. – Cumatru

+0

@David detailview에 더 좋은 옵션은 무엇입니까? 'FragmentActivity' 또는'Activity' 또는'Fragment in Activity'? – Roon13

+0

@ Roon13 죄송합니다. 잘 모르겠습니다. –

관련 문제