Android GridView上的滚动位置跳转

时间:2014-10-27 15:49:33

标签: java android

我有GridView,其中包含多个项目。通过单击项目,将创建新的详细信息视图。然后通过单击后退按钮,用户将返回GridView。我想保留确切的滚动位置,我用以下代码完成了这个:

创建GridView

mArtistList = (GridView) artistsView.findViewById(R.id.gridview);
mArtistAdapter = new ArtistAdapter(mContext);
mArtistList.setAdapter(mArtistAdapter);

// Adapter gets items asynchronously
mArtistAdapter.registerDataSetObserver(new DataSetObserver() {

    @Override
    public void onChanged () {

        // setting first selection item
        mArtistList.setSelection(sActiveItem);

        /*
         *
         * PROBLEM HERE
         * Works ok, but when user touches the GridView
         * scroll position jumps to position where it
         * would be without this line.
         *
         */
        mArtistList.scrollBy(0, sActiveTop);

        super.onChanged();
    }
});

当用户点击GridView

上的项目时
sActiveItem = mArtistList.getFirstVisiblePosition();

// vertical spacing (5dp to pixels)
sActiveTop = (int) (5.0f * getResources().getDisplayMetrics().density);

View firstItem = mArtistList.getChildAt(0);

if (firstItem != null) {
    sActiveTop -= firstItem.getTop();
}

这很好用。按下后退按钮后,滚动位置正好正确。当用户触摸GridView时会出现问题。滚动跳转到第一个可见项目正好位于屏幕顶部的位置。我怎样才能防止这种跳跃?

我不会说英语作为我的母语,所以我的解释可能很难理解。这就是我绘制图像以表明问题的原因:

enter image description here

0 个答案:

没有答案