2011-03-14 14 views
9

मान लें कि मेरे पास देश से शहरों की एक सूची है। यदि उपयोगकर्ता उनमें से किसी एक पर क्लिक करता है, तो मैं उस सूची तत्व के विस्तृत जानकारी के साथ, एक नई स्क्रीन प्रदर्शित करना चाहता हूं। इसके अलावा, उस स्क्रीन में अन्य बटन होंगे (उदाहरण: समीक्षा लिखें, पोस्ट पिक्चर)किसी विशिष्ट सूची दृश्य आइटम का विस्तृत डेटा देखने के लिए कैसे करें

मैं इसे कैसे प्राप्त कर सकता हूं?

+0

आपने अभी तक क्या प्रयास किया? लगता है कि एक [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

@ डेविड विवरण के लिए बेहतर विकल्प क्या है? 'फ्रैगमेंट एक्टिविटी' या 'गतिविधि' या 'गतिविधि में खंड'? – Roon13

+0

@ Roon13 क्षमा करें, मुझे नहीं पता। –

संबंधित मुद्दे