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.