2016-08-13 10 views
0

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 
      } 
     } 
    } 
} 
+0

Kopieren Sie 'GridSpacingItemDecoration' und' dpToPx() 'in Ihr Fragment. – tynn

+0

Keine Sorge, ich habe das Problem behoben, es war aufgrund einer anderen Klasse, die ich erstellt hatte – UCLCoder

+0

Also, ist Ihr Problem jetzt gelöst? @UCLCoder –

Antwort

0

Machen Sie thi s Methode private to public

+0

Anfrage von Details, bitte in einen Kommentar setzen, anstatt zu antworten! Keine gute Übung! – Smit

+0

@ UCLCoder, wenn mein Vorschlag funktioniert auch dann bitte akzeptieren Sie die Antwort, so dass die Menschen können Hilfe bekommen – shahid17june

+0

@ smit, Thaks für Ihre Vorschlag .. ich werde es beim nächsten Mal im Hinterkopf behalten .. – shahid17june

Verwandte Themen