[英]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.