2011-02-04 12 views
7

मैं अपनी सूची को ट्रैवर करने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूं, यदि सूची आइटम दिखाई दे रहे हैं तो यह ठीक काम कर रहा है।लिस्टव्यू से सूची आइटमों की गिनती कैसे प्राप्त करें?

यदि सूची स्क्रॉल करने योग्य है तो इस कोड का उपयोग करके गैर दृश्यमान आइटम एक्सेस नहीं कर रहे हैं। उन सभी सूची आइटमों को कैसे पार करें जो दृश्यमान + गैर दृश्यमान आइटम हैं।

for(int i=0;i<list.getCount;i++) 
{ 
    View v = list.getChildAt(i); 
    TextView tv= (TextView) v.findViewById(R.id.item); 
    Log.d("","ListItem :"+tv.getText()); 
} 

उत्तर

3

हाल ही में मैं इस काम किया। मान लीजिए कि मैं सूची में एक बटन अदृश्य करना चाहता हूं। फिर सूची एडाप्टर के getView में उस बटन को वैश्विक वेक्टर में जोड़ें। नीचे की तरह

class ViewCache 
    {   

     private View baseView;  
     private Button button; 


     public ViewCache(View baseView) 
     {  
      this.baseView = baseView; 
     } 

     public Button getButton() { 
      if(button == null) { 
       button = (Button) baseView.findViewById(R.id.DeleteChatFrndBtn); 
      } 
      return button; 
     } 
    } 


//it is necessary sometimes because otherwise in some cases the list scroll is slow. 

अब आप दिखाई ListItem के बटन onClicking कुछ अन्य बटन चाहते -

Button del_btn = viewCache.getFrame(); 
view_vec.add(del_btn); 

यहाँ viewCache ViewCache वर्ग के एक वस्तु है, जो नीचे की तरह sumthing जाता है। फिर नीचे दिए गए कोड की तरह है -

public void onClick(View v) { 
    // TODO Auto-generated method stub 

    switch(v.getId()) { 

     case R.id.EditChatFrndBtn: 
      length = view_vec.size(); 
      for(int i = 0; i < length; i++) { 

       Button btn = (Button) view_vec.elementAt(i); 
       btn.setVisibility(View.VISIBLE); 

      } 
      doneBtn.setVisibility(View.VISIBLE); 
      editBtn.setVisibility(View.INVISIBLE); 
      break; 
    } 
} 
R.id.EditChatFrndBtn के बजाय

जिनमें से आप अदृश्य/दिखाई ListItem के बटन पर क्लिक पर अपने बटन आईडी डाल दिया।

+0

हाय, मुझे अपने हेडर में मौजूद किसी अन्य बटन के क्लिक पर प्रत्येक सूची आइटम पर शो बटन की आवश्यकता है। क्या आप कृपया बता सकते हैं कि इस व्यू वेक्टर क्या है जिसका आपने उपयोग किया था और क्या फ्रेम() करता है? – Nitish

+0

देखें कि आपको इसके निर्माण के समय सभी बटन (दृश्य) का ट्रैक रखना होगा। इसके बाद ओटीवी आप प्रत्येक सूची आइटम बटन को अलग से एक्सेस नहीं कर सकते हैं। इसलिए जब प्रत्येक बटन दृश्य बनाया जाता है तो मैं इसे एक दृश्य वेक्टर में डालता हूं। यह वेक्टर सभी सूची आइटम बटन दृश्य का ट्रैक रखेगा। – Debarati

+0

समझ गया, और एडाप्टर में व्यूकेच धारक है। क्या मैं सही हू? – Nitish

4

यहां बताया गया है कि आप गतिविधि में अपनी सूची दृश्य कैसे प्राप्त कर सकते हैं और इसे पार कर सकते हैं।

ListView myList = getListView(); 
int count = myList.getCount(); 
for (int i = 0; i < count; i++) 
{ 
    ViewGroup row = (ViewGroup) myList.getChildAt(i); 
    TextView tvTest = (TextView) row.findviewbyid(R.id.tvTestID); 
    // Get your controls from this ViewGroup and perform your task on them =) 

} 

मुझे आशा है कि यह मदद मिलेगी

+0

क्या आप मुझे समझा सकते हैं, व्यू या व्यू ग्रुप से सूची बच्चों को पाने में क्या अंतर है? – ADIT

+5

nullpointer अपवाद देना, – ADIT

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