![](/img/trans.png)
[英]getActivity() or getContext() for a fragment with a viewpager?
[英]Fragment getActivity not working
我正在遵循本教程,並嘗試為每個個人用戶而不是相冊創建個人資料頁面。 但是,我使用片段而不是活動,並且意識到我的代碼與本教程有些不同。
我已經使用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));
無法解析符號GridSpacingItemDecoration
無法解析方法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
}
}
}
}
將此方法設為不公開
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.