3

私は自分のプロジェクトでStaggeredGridViewを使用しており、下にスクロールすると千鳥グリッド ビューにデータを追加しますが、グリッド ビューは上に戻ります。上に戻りたくありません。

以下は、StaggeredGridView の onChanged メソッドです。変更方法を教えてください。

この問題を解決するために私を助けてください、どうもありがとう!

private class AdapterDataSetObserver extends DataSetObserver {

    private Parcelable mInstanceState = null;

    @Override
    public void onChanged() {
        mDataChanged = true;
        mItemCount = mAdapter.getCount();

     // TODO: Consider matching these back up if we have stable IDs.
        mRecycler.clearTransientViews();

        if (mHasStableIds) {
            // Clear all layout records and recycle the views
            mLayoutRecords.clear();
            recycleAllViews();

            // Reset item bottoms to be equal to item tops
            final int colCount = mColCount;
            for (int i = 0; i < colCount; i++) {
                mItemBottoms[i] = mItemTops[i];
            }
        }

        // reset list if position does not exist or id for position has changed
        if(mFirstPosition > mItemCount-1 || mAdapter.getItemId(mFirstPosition) != mFirstAdapterId){
            mFirstPosition = 0;
            Arrays.fill(mItemTops, 0);
            Arrays.fill(mItemBottoms, 0);

            if(mRestoreOffsets!=null)
            Arrays.fill(mRestoreOffsets, 0);
        }

        // TODO: consider repopulating in a deferred runnable instead
        // (so that successive changes may still be batched)
        requestLayout();
    }

    @Override
    public void onInvalidated() {
    }
}

次のコードを削除して、この問題を解決する方法を見つけました。

// reset list if position does not exist or id for position has changed
    if(mFirstPosition > mItemCount-1 || mAdapter.getItemId(mFirstPosition) != mFirstAdapterId){
        mFirstPosition = 0;
        Arrays.fill(mItemTops, 0);
        Arrays.fill(mItemBottoms, 0);

        if(mRestoreOffsets!=null)
        Arrays.fill(mRestoreOffsets, 0);
    } 
4

0 に答える 0