2016-11-16 7 views
4

Expected output image このような出力が必要です。これは、VerticalRecyclerViewのヘッダーとしてHorizo​​ntalRecyclerViewです。Horizo​​ntal RecyclerviewをVertical Recyclerviewのヘッダーとして追加する方法は?

現在、私はこのデザインを達成するためにNestedScrollViewを使用しています。しかしスクロールがスムーズでないと感じました。

ご提案ください。前もって感謝します。

レイアウト:

<android.support.v4.widget.NestedScrollView 
    android:id="@+id/nsv_my_list" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:overScrollMode="ifContentScrolls" 
    android:visibility="gone" 
    android:clipChildren="true"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:paddingTop="15dp"> 

     <LinearLayout 
      android:id="@+id/ll_continue_watching" 
      android:layout_width="match_parent" 
      android:layout_height="132dp" 
      android:visibility="gone" 
      android:orientation="vertical"> 

      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="29dp" 
       android:gravity="center_vertical" 
       android:paddingLeft="15dp" 
       android:paddingRight="15dp"> 

       <customview.font.TextView 
        android:id="@+id/txt_edit_remove_btn" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentEnd="true" 
        android:layout_alignParentRight="true" 
        android:layout_centerVertical="true" 
        android:background="@drawable/btn_profile_edit" 
        android:gravity="center" 
        android:paddingTop="2dp" 
        android:text="EDIT" 
        android:textSize="10sp" /> 

       <customview.font.TextView 
        android:id="@+id/txt_continue_watchng" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentStart="true" 
        android:layout_centerVertical="true" 
        android:text="Continue watching" 
        android:textSize="12sp" /> 

      </RelativeLayout> 

      <View 
       android:layout_width="match_parent" 
       android:layout_height="0.5dp" 
       android:background="@color/horizontal_view_color" /> 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/rv_horizontal_view" 
       android:layout_width="match_parent" 
       android:layout_height="102dp" 
       android:paddingBottom="15dp" 
       android:paddingTop="15dp" /> 

      <View 
       android:layout_width="match_parent" 
       android:layout_height="0.5dp" 
       android:background="@color/horizontal_view_color" /> 
     </LinearLayout> 

     <android.support.v7.widget.RecyclerView 
      android:id="@+id/rv_vertical_view" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" /> 
    </LinearLayout> 
</android.support.v4.widget.NestedScrollView> 
+0

トップで横スクロールするためにRecyclerViewを使用する理由をもう少し説明できますか?おそらく 'TabLayout'を使うだけで十分でしょうか? (https://developer.android.com/reference/android/support/design/widget/TabLayout.html) –

+0

とスクロール可能なタブについてはこちらをご覧くださいhttp://stackoverflow.com/questions/35815615/how-to-make-スクロール可能なタブインアンドロイド –

+0

TabHostまたはTabLayoutを使用してこれを実現します。ただし、このためにRecyclerViewは使用しないでください。 –

答えて

1

非常にシンプルな、あなたの「メイン」リサイクルビューは細胞の2種類、最初のものを持っている、それはまた別リサイクルビュー、および「正常な」細胞で休息です。あなたの「メイン」リサイクルビューのアダプタで

、あなたは、メソッドgetItemViewTypeをオーバーライドするために、このようなものがあります:

@Override 
    public int getItemViewType(int position) { 
     if(postition == 0) { 
      return 1; //Let's say that you define that 1 is the view type for the recycler view cell 
     } 
     else { 
      return 2; //And 2 is going to be the "normal" cells 
     } 
    } 

次に、あなたのonCreateViewHolder方法については、ビューのタイプに応じて、あなたが構築する必要がありますあなたはViewHolderクラス、YourOtherRecyclerViewHolderに1つ、およびYourNormalViewHolderのために他のものを拡張する2つのクラスを実装する必要があります。もちろん、

@Override 
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, 
                int viewType) { 
     if(viewType == 1) { 
      View v = LayoutInflater.from(parent.getContext()) 
           .inflate(R.layout.your_other_recyclerview_layout, parent, false); 
     //build the viewHolder 
     ViewHolder vh = new YourOtherRecyclerViewHolder(v); 
     return vh; 
     } 
     else { 
      View v = LayoutInflater.from(parent.getContext()) 
           .inflate(R.layout.your_normal_cell_layout, parent, false); 
      //build the normal viewHolder 
      YourNormalViewHolder vh = new YourNormalViewHolder (v); 
      return vh; 
     } 

    } 

:と正しいviewHolder、このような何かを返します。

私はそれが助けてくれることを願っています!

+0

この考えを念頭に置いていましたが、私はこれについていくつかの説明が必要です。 *このコンセプトでは、recyclerviewとそのアドパターを適用できますか? –

+0

もちろん可能です。 – kelmi92

+0

私はこの時点でこれと似たようなコードにアクセスすることはできませんが、完全な例がいくつかあります。https://guides.codepath.com/android/Heterogenous-Layouts-inside-RecyclerView – kelmi92

関連する問題