[英]How to scroll gridview to position?
我在网格视图上有30张图像(每行3张图像)。 如果用户选择第20张图像并转到下一个屏幕并返回,则我想聚焦到该位置。 我使用下面的代码行,它适用于前8行,但在后2行中没有滚动。 请帮忙。
gridview.setSelection(position);
gridview.requestFocusFromTouch();
gridview.setSelection(position);
谢谢
原因是因为您的视图将在适配器中重用。
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();
并通过还原值
gridview.smoothScrollToPosition(int index)
您可以尝试这样的事情。希望这对您有用。
选择发生时,请保存此位置
int index = gridview.getFirstVisiblePosition();
当您回到gridview时,您可以尝试一下
gridview.smoothScrollToPosition(int index)
对我有用的解决方案是合并Monali和Sreedev的代码(谢谢Monali和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();
稍后在应用中...
// scroll gridview to vertical position pre user tap follow
gridview.setSelection(gridviewVerticalPositionWhenThumbnailTapped);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.