简体   繁体   中英

How to scroll gridview to position?

I have 30 images on grid view (3 images per row). If user select 20th image and go to next screen and come back then I want to focus to that position. I used following line to code, it works for first 8 rows but in last 2 row it is not scrolling. Please help.

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

Thanks

The reason is because your view will be reused in your adapter.

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;
    }
}

If your view is forced not to reuse then you can scrolltoposition by saving this value

int index = gridview.getFirstVisiblePosition(); 

and restore the value by

gridview.smoothScrollToPosition(int index)

You can try somthing like this .I hope this will work for you..

When selection happens do this save position

int index = gridview.getFirstVisiblePosition();

And when you come back to the gridview then you can try this

gridview.smoothScrollToPosition(int index)

solution that worked for me was combine code from Monali and Sreedev (thank you Monali and Sreedev):

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();

later in app...

// scroll gridview to vertical position pre user tap follow                
gridview.setSelection(gridviewVerticalPositionWhenThumbnailTapped);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM