Я хочу добавить разделители в свой 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()
?