2017-07-17 2 views
1

ich möchte wie diese, weil sein in einer Scroll-Ansichtmehr RecyclerViews über sie mit Inhalt

<ScrollView 
<LinearLayout << content here 
<android.support.v7.widget.RecyclerView 
<LinearLayout << content here 
<android.support.v7.widget.RecyclerView 
<LinearLayout << content here 
<android.support.v7.widget.RecyclerView 
</ScrollView> 

aber das Problem in diesem Layout, das die RecyclerView nicht Gegenstand Recycling ein Layout mit mehreren RecyclerViews machen ,,, meinem Frage ist: Wie erreichen andere Apps diesen Effekt von mehreren vertikalen Listen? Wie kann ich Inhalte scrollen? Was sind die Möglichkeiten, die ich tun kann?

Hinweis: RecyclerViews unterschiedliche LayoutMnager haben

Antwort

0

Sie können NestedScrollView verwenden. Verwenden Sie nicht scrollview .. Geben Sie auch "recyclerView.setNestedScrollingEnabled (false)". Es wird Ihr Problem

+0

NestedScrollView gleiche Ansichten nicht bekommen, recyceln –

0

lösen Wenn alle recyclerviews vertikal scrollen können Sie einfach GridLayoutManager mit unterschiedlicher Spannweite zählt (siehe link) und ein recyclerview mit unterschiedlichen Ansichtstypen (siehe link)

+0

diese ist möglich, aber es ist sehr begrenzt, wenn Sie viele defrrent Artikel haben, und es ist sehr Zeit konsuimg –

0

Der Trick hier ist zu schaffen eine "Mutter" RecyclerView, die andere Recycleransichten hostet. Machen Sie Artikel wie folgt aus:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView 
     android:id="@+id/your_content" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/item_rv" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

dann eine entsprechende ViewHolder machen:

public static class ViewHolder extends RecyclerView.ViewHolder { 
    private TextView textView; 
    private RecyclerView recyclerView; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     textView = (TextView) itemView.findViewById(R.id.your_content); 
     recyclerView = (RecyclerView) itemView.findViewById(R.id.item_rv); 
    } 
} 

Nun richten Sie die RecylerView wenn Bindung:

public void onBindViewHolder(ViewHolder viewHolder, int i) { 
    viewHolder.textView.setText("This is content " + i); 
    viewHolder.recyclerView.setLayoutManager(new GridLayoutManager(activity, 2, LinearLayoutManager.HORIZONTAL, false)); 
    viewHolder.recyclerView.setAdapter(new MyAdapter()); 
}