Какой процесс вызывает getItemOffsets (), когда я добавляю разделители с помощью RecyclerView? - PullRequest
0 голосов
/ 03 августа 2020

Я хочу добавить разделители в свой xml файл, и нашел такие коды. Он работает, но я не знаю, какой метод вызывать как функцию getItemOffsets ()

, поскольку никакие функции не вызывают ее явно.

MainActivity. java

package com.example.myapplication.activities;

import android.os.Bundle;

import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.RecyclerView;

import com.example.myapplication.R;
import com.example.myapplication.adapters.MusicGridAdapter;
import com.example.myapplication.views.GridSpaceItemDec;

public class MainActivity extends BaseActivity {

    private RecyclerView mRvGrid;
    private MusicGridAdapter mAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();
    }

    private void initView () {
        initNavBar(false, "Music", true);

        mRvGrid = fd(R.id.rv_grid);
        mRvGrid.setLayoutManager(new GridLayoutManager(this, 3));
        mRvGrid.addItemDecoration(new GridSpaceItemDec(getResources().getDimensionPixelOffset(R.dimen.albumMarginSize)));
        mAdapter = new MusicGridAdapter(this);
        mRvGrid.setAdapter(mAdapter);
    }
}

GridSpaceItemDe c. java

package com.example.myapplication.views;

import android.graphics.Rect;
import android.util.Log;
import android.view.View;

import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

public class GridSpaceItemDec extends RecyclerView.ItemDecoration {

    private int mSpace;

    public GridSpaceItemDec(int space) {
        mSpace = space;
    }

    @Override
    public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);

        outRect.left = mSpace;
        Log.e("Decoration","offsets called");    // I tried to print something to the console, but I didn't find it out on the logcat.
    }
}

здесь функция построения класса GridSpaceItemDe c не вызывает getItemOffsets(), так что же происходит во время вызова функции addItemDecoration()? Будет ли он по умолчанию вызывать getItemOffsets()?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...