2012-10-04 11 views
8

के रूप में हम एंड्रॉयड ग्रिड दृश्य का उपयोग जानते हैं, हम निम्न कर सकते हैं और जब आइटम क्लिक किया जाता है सूचित किया जाए:एंड्रॉयड प्राप्त स्थिति

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
    Toast.makeText(PopularCapitActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 
    } 
}); 

हम यह भी जानते है कि, अगर ग्रिड में सेल एक क्लिक करने योग्य आइटम होता है, एक बटन कहता है, उपरोक्त को निकाल दिया नहीं जाएगा।

इसलिए वर्तमान में मेरे पास ग्रिड व्यू है, इसलिए प्रत्येक सेल का अपना बटन होता है, इसलिए जब उपयोगकर्ता बटन पर क्लिक करता है, तो उसके पास बटन पर मौजूद सेल के आधार पर इसकी स्वयं की कार्रवाई होगी, मेरा सवाल है, मैं कैसे कर सकता हूं बटन हैंडलर में सेल स्थिति का उपयोग करें?

धन्यवाद

+0

क्या आप ग्रिड व्यू के लिए कस्टम एडाप्टर का उपयोग कर रहे हैं? – dennisdrew

+0

हाँ मेरे पास बस कस्टमलिस्ट है जो बस बेसलिस्ट एडाप्टर – user1697965

उत्तर

28

मान लिया जाये कि आप GridView के लिए एक कस्टम एडाप्टर का उपयोग कर रहे हैं, getView विधि में आप बस बटन उद्देश्य यह है कि स्थिति getView में पारित होता है पर एक टैग जोड़ना कर सकते हैं:

button.setTag(new Integer(position)); 

फिर , onClickListener विधि में, का मानना ​​है कि में (बटन) पारित हो जाता है के साथ आप कर सकते हैं:

Integer position = (Integer)view.getTag(); 

और फिर वहाँ से स्थिति मूल्य संभाल।

संपादित करें: ऐसा प्रतीत होता है सबसे अच्छा अभ्यास करने के लिए होगा:

button.setTag(Integer.valueOf(position)); 

बल्कि पूर्णांक निर्माता का उपयोग करने से।

+5

बढ़ा रहा है ओह वाह, धन्यवाद। मेरा एकमात्र सवाल यह है: इस जवाब में 5000 अपवॉट क्यों नहीं हैं? क्या मैं ग्रिड व्यू में बटन डाल रहा हूं? –

+1

धन्यवाद! मैंने सबसे अच्छा अभ्यास करने के लिए अभी अपना जवाब अपडेट किया है। कन्स्ट्रक्टर की बजाय Integer.valueOf (स्थिति) का उपयोग करने की अनुशंसा की जाती है। – dennisdrew

+0

ग्रेट सॉल्यूशन! अब, हालांकि, 'Integer.valueOf (स्थिति)' की आवश्यकता नहीं है, बस 'स्थिति' पास करने से भी काम करेगा। – jpyams

0
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
    { 
     String a = String.valueOf(position); 
     Toast.makeText(getApplicationContext(), a, Toast.LENGTH_SHORT).show(); 
    } 
}); 
संबंधित मुद्दे