2013-04-02 6 views
6

मेरे पास ग्रिड व्यू पर 30 छवियां हैं (प्रति पंक्ति 3 छवियां)। यदि उपयोगकर्ता 20 वीं छवि का चयन करता है और अगली स्क्रीन पर जाता है और वापस आ जाता है तो मैं उस स्थिति पर ध्यान केंद्रित करना चाहता हूं। मैंने कोड के लिए निम्नलिखित पंक्ति का उपयोग किया, यह पहली 8 पंक्तियों के लिए काम करता है लेकिन पिछले 2 पंक्ति में यह स्क्रॉल नहीं कर रहा है। कृपया मदद करे।स्थिति के लिए ग्रिडव्यू कैसे स्क्रॉल करें?

gridview.setSelection(position); 
gridview.requestFocusFromTouch(); 
gridview.setSelection(position); 

धन्यवाद

उत्तर

13

कारण यह है कि आपका दृश्य आपके एडाप्टर में पुन: उपयोग किया जाएगा।

public class ImageAdapter extends BaseAdapter { 
    private Context context; 
    private final String[] someprivatevariable; 

    public ImageAdapter(Context context, String[] mobileValues) { 
     // Your boring constructor 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 

     LayoutInflater inflater = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     View gridView; 

      // REUSE VIEW IF NOT NULL CODE 
     if (convertView == null) { 
        ..... 
        ..... 
        you generally create your view here 
     } else { 
      gridView = (View) convertView; 
     } 

     return gridView; 
    } 
} 

आपके विचार के लिए मजबूर किया जाता है, तो पुनः उपयोग न करने आप यह मान

int index = gridview.getFirstVisiblePosition(); 

सहेजकर scrolltoposition और

gridview.smoothScrollToPosition(int index) 
+0

उत्तर के लिए धन्यवाद .. – Monali

+0

@lalitab बी लेकिन smoothScrollToPosition (इंडेक्स) ICS.Is वहाँ किसी भी तरह से करने के लिए काम नहीं कर रहा आईसीएस पर उपयोग करने के लिए कृपया मुझे अग्रिम में धन्यवाद दें। –

+0

@ लालिथ बी क्या आप जानते हैं कि चिकनी स्क्रॉल कैसे करें? मेरे पास> मेरे ग्रिड व्यू में 1000 तत्व हैं और चिकनी स्क्रॉल कुछ समय लेता है। – Agata

6

की तरह इस .मैं आशा है कि यह आप के लिए काम करेंगे आप somthing कोशिश कर सकते हैं ..

जब चयन होता है इस स्थिति

int index = gridview.getFirstVisiblePosition(); 

बचाने करना और जब तुम आ ग्रिडव्यू पर वापस जाएं तो आप इसे

gridview.smoothScrollToPosition(int index) 
आज़मा सकते हैं
0

समाधान है कि मेरे लिए काम किया द्वारा मूल्य बहाल कर सकते हैं किया गया था कोड गठबंधन मोनाली और श्रीदेव से (धन्यवाद मोनाली और श्रीदेव):

private int gridviewVerticalPositionWhenThumbnailTapped; 

...

// save vertical position of gridview screen, will use to re-find this location if user follows a usre and gridview gets redrawn 
gridviewVerticalPositionWhenThumbnailTapped = gridview.getFirstVisiblePosition(); 

बाद में अनुप्रयोग में ...

// scroll gridview to vertical position pre user tap follow     
gridview.setSelection(gridviewVerticalPositionWhenThumbnailTapped); 
संबंधित मुद्दे