我正在關注this教程,並嘗試爲每個單獨的用戶而不是專輯創建一個配置文件頁面。但是,我正在使用片段而不是活動,並意識到我的代碼將與教程有所不同。片段getActivity不起作用
我已經使用了Android開發人員文檔和我自己的知識來修復大部分從活動轉移到片段的錯誤,但是我似乎無法找到解決此問題的任何幫助,不勝感激。
我有下面的代碼工作正常:
recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler_view);
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2);
recyclerView.setLayoutManager(mLayoutManager);
但是當我嘗試添加到回收視圖我得到一個錯誤:
recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(10), true));
Cant resolve symbol GridSpacingItemDecoration
Cant resolve method dpToPx(int)
下面是它的類作爲要求
public class GridSpacingItemDecoration extends RecyclerView.ItemDecoration {
private int spanCount;
private int spacing;
private boolean includeEdge;
public GridSpacingItemDecoration(int spanCount, int spacing, boolean includeEdge) {
this.spanCount = spanCount;
this.spacing = spacing;
this.includeEdge = includeEdge;
}
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
int position = parent.getChildAdapterPosition(view); // item position
int column = position % spanCount; // item column
if (includeEdge) {
outRect.left = spacing - column * spacing/spanCount; // spacing - column * ((1f/spanCount) * spacing)
outRect.right = (column + 1) * spacing/spanCount; // (column + 1) * ((1f/spanCount) * spacing)
if (position < spanCount) { // top edge
outRect.top = spacing;
}
outRect.bottom = spacing; // item bottom
} else {
outRect.left = column * spacing/spanCount; // column * ((1f/spanCount) * spacing)
outRect.right = spacing - (column + 1) * spacing/spanCount; // spacing - (column + 1) * ((1f/ spanCount) * spacing)
if (position >= spanCount) {
outRect.top = spacing; // item top
}
}
}
}
將'GridSpacingItemDecoration'和'dpToPx()'複製到您的片段。 – tynn
不用擔心我解決了這個問題,這是由於我創建了另一個課程 – UCLCoder
所以,現在你的問題解決了嗎? @UCLCoder –