2016-10-27 2 views
0

Мне нужно создать гетерогенный RecyclerView. Число столбцов по умолчанию равно 2, но для некоторых элементов требуется полная ширина. Я его, используя StaggeredGridLayoutManager вроде этого:Установить полный диапазон для GridLayoutManager

@Override 
    public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { 
     int viewType = getItemViewType(position); 
     FeedItems currentItem = getItem(position); 
     StaggeredGridLayoutManager.LayoutParams layoutParams = (StaggeredGridLayoutManager.LayoutParams) holder.itemView.getLayoutParams(); 
     switch (viewType) { 
      case ITEM_TYPE_HEADER: 
       final HeaderItem headerItem = currentItem.getHeaderItem(); 
       layoutParams.setFullSpan(true); 
     } 
    } 

Как сделать то же самое для GridLayoutManager, где я могу легко переключаться пролетов на основе различных типов зрения?

ответ

2

Существует метод void setSpanSizeLookup (GridLayoutManager.SpanSizeLookup spanSizeLookup). Используйте его следующим образом:

mLayoutManager = new GridLayoutManager(getActivity(), 2); 
mLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { 
     @Override 
     public int getSpanSize(int position) { 
      switch(mAdapter.getItemViewType(position)){ 
       case 1: 
        return 1; 
       case 2: 
        return 2; 
       default: 
        return -1; 
      } 
     } 
    }); 

mRecyclerView.setLayoutManager(mLayoutManager); 
+0

Это необходимо сделать перед установкой адаптера в recyclerView или после? –

+0

Как правило, перед установкой 'RecyclerView.Adapter' необходимо установить параметр' LayoutManager'. –

+0

ОК, понял. Благодарю. –

Смежные вопросы