2016-09-30 6 views
2

アイテムのリストを表示するには通常、RecyclerViewを使用しますが、縦型のLinearLayoutを使いやすくする要件があります。私はRecyclerViewの優れたリソース管理を失いたくないので、私は別の解決策を探していて誰かが私を助けてくれることを願っています。RecyclerViewsの機能に関する説明

いくつかのビューが上に表示され、次にアイテムのリストの後にさらに下のビューが表示されるレイアウトが考えられます。または、複数のRecyclerViewを含むレイアウト。だから、上にいくつかの見解、いくつかのより多くのビューに続く項目のリストやアイテムなどの別のリストを持っている

私のレイアウトは、次のようになります。

  • View1を
  • VIEW2
  • RecyclerView
  • View3
  • RecyclerView
  • View4

通常、RecyclerViewはスクロール可能なフレームのように機能し、コンテンツをスクロールすることができます。つまり、スクロールを開始すると、画面全体が一定の位置に止まってしまい、最後までRecyclerViewをスクロールしているだけです。その後、画面全体をスクロールし続けることができます。

私が欲しいのは、完全に膨らんでいるRecyclerViewです。そのため、RecyclerViewだけでなく画面全体を常にスクロールしていますが、RecyclerViewのリソース管理を失うことはありません。

誰でもこの解決策を知っていますか?私は私自身のgetItemViewType

+0

RecyclerViewの両方を含む各ビュー()の高さが非常に短い場合は、説明したセットアップは、確かに可能であるのに役立ちます。 – HenriqueMS

答えて

0

@Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

     if (viewType == ITEM_TYPE_NORMAL) { 
      View normalView = LayoutInflater.from(getContext()).inflate(R.layout.my_normal_row, null); 
      return new MyNormalViewHolder(normalView); // view holder for normal items 
     } else if (viewType == ITEM_TYPE_HEADER) { 
      View headerRow = LayoutInflater.from(getContext()).inflate(R.layout.my_header_row, null); 
      return new MyHeaderViewHolder(headerRow); // view holder for header items 
     } 
    } 

何私がお勧めするカスタムアダプタを備えた単一recyclerviewを使用することで、あなたの条件に基づいて、diffレイアウトを使ってrecyclerviewの各行を膨らませます。

1

はリサイクルビューのカスタムアダプタにコードの下に追加実装するだけで1 RecycleViewを使用してこのような状況で

0

ベストアンサーは、画面全体でどのような動作を望むかによって異なります。

"完全に膨らんでいるRecyclerViewは、RecyclerViewだけでなく画面全体を常にスクロールしていますが、RecyclerViewのリソース管理を失うことはありません。

この要件によって、実際には、@ Rissmon Sureshや@betorcsなどの異なるViewHolderタイプを使用する単一のRecyclerViewが最適なオプションであると考えられます。

public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 



     class HeaderViewHolder extends RecyclerView.ViewHolder { 
      ... 
     } 


     class NormalViewHolder1 extends RecyclerView.ViewHolder { 
      ... 
     } 



     @Override 
     public int getItemViewType(int position) { 

      // use position to decide what kind of View you want 
      // can be fixed or you can access the data to check dinamically 

      if(position == 0) 
       return 0; 
      else 
       return 1; 
     } 


     @Override 
     public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 

      switch (viewType) { 
       case 0: return new HeaderViewHolder(...); 
       case 1: return new NormalViewHolder1(...); 
       //... 
      } 
     } 
    } 

希望これは=)

+0

あなたの問題を解決できましたか?これが助けられたかどうかを教えてください) – HenriqueMS

関連する問題