繁体   English   中英

如何滚动GridView到位置?

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

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