2016-05-23 14 views
0

zu halten Ich habe drei Recyclerview in einem NestedScrollview und ich brauche, dass der dritte Recycling wie wenn er aus der NestedScrollview war. Alles geht gut, außer die Recycling-Funktion fehlt.Android, wie RecyclerView recycling in ScrollView

Hier ist meine xml:

 <android.support.v4.widget.NestedScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/scroll_discovery" 
     android:fillViewport="true" 
     android:fitsSystemWindows="true" 
     > 
     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      > 
      <android.support.v7.widget.RecyclerView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/category_recycler"/> 
      <android.support.v7.widget.RecyclerView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/category_recycler" 
       android:id="@+id/user_recycler"/> 
      <android.support.v7.widget.RecyclerView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@id/user_recycler" 
       android:id="@+id/experiences"/> 
     </RelativeLayout> 
    </android.support.v4.widget.NestedScrollView> 

und hier ist der Java-Teil

experienceRecycler=(RecyclerView)findViewById(R.id.experiences); 
    experienceRecycler.setHasFixedSize(true); 
    mLayoutManager =new LinearLayoutManager(this) { 
     @Override 
     public boolean canScrollVertically() { 
      return false; 
     } 
    }; 
    page= 1; 
    experienceRecycler.setLayoutManager(mLayoutManager); 
    experienceAdapter=new FeedCardAdapter(experiences,this,currentUser); 
    experienceRecycler.setAdapter(experienceAdapter); 
    /*experienceRecycler.addOnScrollListener(new RecyclerView.OnScrollListener() { 
     @Override 
     public void onScrollStateChanged(RecyclerView recyclerView, int newState) { 
      super.onScrollStateChanged(recyclerView, newState); 
     } 

     @Override 
     public void onScrolled(RecyclerView recyclerView, int dx, int dy) { 
      super.onScrolled(recyclerView, dx, dy); 
      feedCardAdapter.setScrolled(true); 
     } 
    });*/ 

    categoryRecycler=(RecyclerView)findViewById(R.id.category_recycler); 
    categoryRecycler.setLayoutManager(new LinearLayoutManager(this){ 
     @Override 
     public boolean canScrollVertically() { 
      return false; 
     } 
    }); 
    categoryAdapter=new CategoryAdapter(this,categories); 
    categoryRecycler.setHasFixedSize(true); 
    categoryRecycler.setAdapter(categoryAdapter); 

    userRecycler=(RecyclerView)findViewById(R.id.user_recycler); 

    userRecycler.setLayoutManager(new LinearLayoutManager(this){ 
     @Override 
     public boolean canScrollVertically() { 
      return false; 
     } 
    }); 
    userAdapter=new UserAdapter(this,users); 
    userRecycler.setAdapter(userAdapter); 
    userRecycler.setHasFixedSize(true); 
+0

Folgen Sie diesem Link: http://stackoverflow.com/questions/35746113/android-recycleview-inside-scrollview –

+0

Danke für den Link, aber es erzeugt mir die folgende Ausnahme: 'java.lang.IndexOutOfBoundsException: Invalid item Position 0 (0). Anzahl der Elemente: 0 unter android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition (RecyclerView.java:4622) unter android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition (RecyclerView.java:4617) unter com.actvt .actvt.CustomLinearLayoutManager.measureScrapChild (CustomLinearLayoutManager.java:67) unter com.actvt.actvt.CustomLinearLayoutManager.onMeasure (CustomLinearLayoutManager.java30) ' – user1796260

Antwort

0

ich endlich die Lösung von mir finden. Ich hatte gerade eine Höhe zur Recycleransicht, die ich weiter recyceln möchte.

+0

Haben Sie eine feste Höhe festgelegt? – superuserdo