Ich folge this Tutorial, und und versuche, eine Profilseite für jeden einzelnen Benutzer anstelle von Alben zu erstellen. Allerdings verwende ich Fragmente anstelle von Aktivitäten und erkenne, dass mein Code etwas anders ist als das Tutorial.Fragment getActivity funktioniert nicht
Ich habe die Android-Entwicklerdokumentation und mein eigenes Wissen verwendet, um die Mehrzahl der Bugs zu beheben, die von einer Aktivität auf ein Fragment übertragen, aber ich kann nicht die Lösung finden, jede Hilfe wird geschätzt.
Ich habe den Code unten, die gut funktioniert:
recyclerView = (RecyclerView) getActivity().findViewById(R.id.recycler_view);
RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2);
recyclerView.setLayoutManager(mLayoutManager);
Aber wenn ich an die Recycler Ansicht versuchen hinzuzufügen, bekomme ich einen Fehler:
recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(10), true));
Cant resolve symbol GridSpacingItemDecoration
Cant resolve method dpToPx(int)
Hier ist seine Klasse als angefordert
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
}
}
}
}
Kopieren Sie 'GridSpacingItemDecoration' und' dpToPx() 'in Ihr Fragment. – tynn
Keine Sorge, ich habe das Problem behoben, es war aufgrund einer anderen Klasse, die ich erstellt hatte – UCLCoder
Also, ist Ihr Problem jetzt gelöst? @UCLCoder –