2016-10-02 24 views
0

Recyclerviewはスクロールビューでスムーズにスクロールしません。私はスムーズよりもスクロールビューを削除する場合。私はrecyclerviewの円滑なスクロールのために何をすべきですか?RecyclerViewはスムーズにスクロールしません

<?xml version="1.0" encoding="utf-8"?> 
    <ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:app="http://schemas.android.com/apk/res-auto" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <RelativeLayout 
      android:id="@+id/content_activity_main" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      > 

      <android.support.v7.widget.RecyclerView 
       android:id="@+id/rv" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentTop="true" 
       /> 

      <LinearLayout 
       android:id="@+id/ll" 
       android:layout_width="match_parent" 
       android:layout_height="90dp" 
       android:layout_below="@+id/rv" 
       android:orientation="vertical"> 

       <ImageView 
        android:layout_width="50dp" 
        android:layout_height="50dp" 
        android:scaleType="fitXY" 
        /> 

       <TextView 
        android:id="@+id/textView35" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="8dp" 
        /> 

      </LinearLayout> 
     </RelativeLayout> 
    </ScrollView> 

答えて

1

RecyclerViewをScrollViewに配置しないでください。 RecyclerViewの最後にフッターを表示する必要がある場合(RecyclerViewの最後の項目の後のビュー)、これもRecyclerViewの一部である必要があります。これを行うには、アダプタで別の項目タイプを指定し、適切なViewHolderを返すだけです。 、そして、

private class ViewType { 
     public static final int NORMAL = 0; 
     public static final int FOOTER = 1; 
} 

アダプタの同様にgetCount()をオーバーライドし、1つの以上のアイテムを追加します:

まず、あなたのアダプタでこれを追加し

@Override 
public int getCount() { 
    return yourListsSize + 1; 
} 

次へ]を、あなたはどのタイプの指定する必要があります現在の項目です。これを達成するためには、お使いのアダプタのgetItemViewTypeを()をオーバーライド:

@Override 
public int getItemViewType(int position) { 
    if(position == getCount() - 1) 
     return ViewType.FOOTER; 
    else 
     return ViewType.NORMAL; 
} 

最後に、onCreateViewHolderで()現在のアイテムの種類をチェックし、適切なビュー膨らま:もちろん

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

    View rowView; 

    switch (viewType) { 
     case ViewType.NORMAL: 
      rowView=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.normal, viewGroup, false); 
      break; 
     case ViewType.FOOTER: 
      rowView=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.footer, viewGroup, false); 
      break; 
     default: 
      rowView=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.normal, viewGroup, false); 
      break; 
    } 
    return new ViewHolder(rowView); 
} 

を、別のxmlファイルにフッターレイアウトを移動して、ここで展開する必要があります。 「フッターレイアウト」では、LinearLayoutandroid:id="@+id/ll"とその子ビューを指定しています。

これが役に立ちます。

関連する問題