如何将gridview滚动到位置?

Mon*_*ali 6 android

我在网格视图上有30个图像(每行3个图像).如果用户选择第20张图像并转到下一个屏幕并返回,那么我想将焦点放在该位置.我使用了以下代码行,它适用于前8行,但在最后2行中它不会滚动.请帮忙.

gridview.setSelection(position);
gridview.requestFocusFromTouch();
gridview.setSelection(position);
Run Code Online (Sandbox Code Playgroud)

谢谢

Lal*_*h B 14

原因是您的视图将在您的适配器中重用.

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您的视图被强制不重用,那么您可以通过保存此值来滚动排版

int index = gridview.getFirstVisiblePosition(); 
Run Code Online (Sandbox Code Playgroud)

并恢复该值

gridview.smoothScrollToPosition(int index)
Run Code Online (Sandbox Code Playgroud)


Sre*_*v R 7

你可以尝试这样的事情.我希望这对你有用..

选择发生时,这样可以保存位置

int index = gridview.getFirstVisiblePosition();
Run Code Online (Sandbox Code Playgroud)

当你回到gridview然后你可以试试这个

gridview.smoothScrollToPosition(int index)
Run Code Online (Sandbox Code Playgroud)