2016-04-04 8 views
0

配列からAPIの項目がいくつかリストされたフラグメントリストがあります。また、フラグメントクラスとリサイラーアダプターを作成しましたグリッドビューとしてのレイアウトマネージャ。私のビューには2つの配列の項目と広告のフッターが入っています。ヘッダーは正常に実装されましたが、フッターが正しく表示されません。提案された方法は大きな変更なしに貴重です。リサイクラーグリッドビューと表示ヘッダーとフッターの複数のスパンを設定する方法

断片

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アダプタ

 @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; 
    } 

Recyclerlistviewに示す通常のバナー広告として最後の位置に広告を設定する必要があります。

答えて

1

あなたはこのようにそれを達成できる:

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

||演算子はintとbooleanで使用できません –

+0

私の悪い、編集された。 – Ian

+0

実際には、私は3つの項目1つのヘッダー、リスト項目を持っていますし、最後にフッターに広告を追加したい コードを試しましたが、フッタ広告が表示されません –