2016-04-04 5 views
0

Ich habe ein Fragment Auflistung paar Elemente aus einem Array, wo Array von einer API gefüllt wird, auch ich habe eine Fragment-Klasse und einen Recycler-Adapter, den ich aufgerufen hatte Layout-Manager als Rasteransicht. Meine Ansicht hat eine Kopfzeile enthält zwei Elemente des Arrays und eine Fußzeile der Anzeige. Ich habe den Header erfolgreich implementiert, bekomme aber meine Fußzeile nicht richtig. vorgeschlagene Wege sind ohne große Veränderung wertvoll.So legen Sie mehrere Bereiche für Recycler Gridview und zeigen Kopf- und Fußzeile

Fragment

mRecyclerView = (RecyclerView) view.findViewById(R.id.mrecycler_channel); 
     mRecyclerView.setHasFixedSize(true); 
     GridLayoutManager gm = new GridLayoutManager(getActivity(),2); 
     gm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
      @Override 
      public int getSpanSize(int position) { 
       return position == 0 ? 2:1; 
      } 
     }); 
     mRecyclerView.setLayoutManager(gm); 
     mAdapter = new StationsListAdapter(getActivity(), listStations, listlikedStations, listner); 
     mRecyclerView.setAdapter(mAdapter); 

recyclerview Adapter

 @Override 
     public int getItemCount() { 
     int array = listAddress.size(); 
      Log.d("abhil",""+array); 
    //  if(listAddress.size()>0) { 
       return listAddress.size() - 1; 
    //  }else{ 
    //   return 0; 
    //  } 
     } 

     @Override 
     public int getItemViewType(int position) { 
      if (position == 0) { 
       return TYPE_HEADER; 
      } else if(isPositionFooter(position)){ 
       return AD_TYPE; 
      } 
      return TYPE_ITEM; 
     } 
private boolean isPositionFooter (int position) { 
     return position == listAddress.size() + 1; 
    } 

Anzeige auf der letzten Position als normale Banner-Anzeige in Recyclerlistview zeigt einstellen müssen.

Antwort

1

Man könnte es so erreichen:

gm.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      //Do your lookup here 

      return (position == 0 || position == listStations.size() - 1) ? 2 : 1; 
     } 
    }); 
+0

|| Operator kann nicht in int und boolean verwendet werden –

+0

Mein schlechtes, bearbeitet. – Ian

+0

eigentlich habe ich 3 Artikel einen Header, Listenelement und schließlich am Footer möchte ich eine Anzeige hinzufügen Ich habe den Code versucht, aber meine Footer-Anzeige wird nicht angezeigt –

Verwandte Themen