Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to scroll gridview to position?

Tags:

android

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

like image 337
Monali Avatar asked Apr 02 '13 06:04

Monali


1 Answers

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)
like image 171
Lalith B Avatar answered Sep 20 '22 23:09

Lalith B