簡體   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