2010-01-04 22 views
33

का डेटा सूचकांक मिल रहा एक Android ListView एक SimpleAdapter उस में स्क्रीन में फिट की तुलना में अधिक आइटम नहीं है कि के साथ बनाया है। सूची स्क्रॉल होने के बाद, मुझे सूची में पहले दृश्यमान आइटम के डेटा मॉडल में स्थिति प्राप्त करने की आवश्यकता है। listView.getChildAt(0).getPositionInDataModel():एंड्रॉयड ListView: दिखाई आइटम

मूल रूप से मैं की तरह एक समारोह चाहते हैं।

Adapter इसमें कुछ फ़ंक्शन हैं, जैसे getItemId(position) जो उपयोगी दिखते थे; हालांकि, SimpleAdapter कार्यान्वयन केवल पारित स्थिति को वापस लौटाता है, एक पंक्ति आईडी नहीं, जैसा कि मैंने आशा की थी।

एक जानवर बल समाधान सूचकांक 0 में देखें मिलता है, और अनुकूलक में प्रत्येक आइटम के लिए देखने के लिए यह तुलना करने के लिए किया जाएगा। हालांकि, एडाप्टर से किसी विशेष स्थिति के लिए दृश्य प्राप्त करने का एक आसान तरीका प्रतीत नहीं होता है।

कोई भी किसी भी विचार किया है?

उत्तर

90

यह बहुत आसान है। बस ListView.getFirstVisiblePosition() + indexYouWant का उपयोग करें। उदाहरण के लिए, ListView में प्रदर्शित दूसरे बच्चे के एडाप्टर में स्थिति प्राप्त करने के लिए, बस getFirstVisiblePosition() + 1 का उपयोग करें।

ऊपर :)

+2

वाह, मुझे विश्वास नहीं है कि मुझे याद आया। मैं इस तरह के एक समारोह के लिए देख रहा था। ऐसा होना चाहिए क्योंकि यह एक अभिभावक वर्ग में परिभाषित किया गया है जहां मैंने इसकी अपेक्षा नहीं की थी। अभी भी इस जावाडोक शैली में उपयोग किया जा रहा है ... इसे इंगित करने के लिए धन्यवाद! –

+0

@RomainGuy, आपने मेरी सूची दृश्य प्रदर्शन सहेजा ... –

+0

getFirstVisiblePosition() और getLastVisiblePosition() के बीच के कुछ विचार मेरे ग्रिडव्यू में शून्य वापस आते हैं। मैं विचारों को रीसाइक्लिंग कर रहा हूं - क्या यह कारण है? मैं उम्मीद करता हूं कि दृश्यमान दृश्यों की गारंटी नहीं दी जाएगी, खासकर जब से मैं देख सकता हूं कि वे नहीं हैं। – Laurent

1
listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
{ 
    public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) 
    { 
     AisleId= parent.getSelectedItemId(); 
    } 
    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 
    } 
}); 

सभी डरावना जबाब में दिखाया गया सामान के लिए कोई ज़रूरत नहीं इस में हम मिल जाएगा सूची आइटम क्रमांक parent.getSelectedItemId();

-1

सीधे शब्दों में getPositionForView(View) (see documentation) का उपयोग करें। इस विधि का मुख्य लाभ यह है कि यह किसी आइटम के वंशज View एस के साथ भी काम करता है।

+1

यह क्यों कम किया गया था? क्या यह काम नहीं करता है? –

+0

यह सिर्फ सवाल का जवाब नहीं देता है –

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