gpt4 book ai didi

android - RecyclerView 滚动不流畅

转载 作者:行者123 更新时间:2023-11-29 19:31:34 25 4
gpt4 key购买 nike

Recyclerview 无法使用 scrollview 顺畅地滚动。如果我删除 ScrollView 而不是它的平滑。我应该怎么做才能让 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>

最佳答案

您不应该将 RecyclerView 放在 ScrollView 中。如果您需要在 RecyclerView 的末尾显示页脚(即 RecyclerView 最后一项之后的 View ),那么这也应该是 RecyclerView 的一部分。为此,您只需在适配器中指定不同的项类型并返回适当的 ViewHolder。

首先将此添加到您的适配器中:

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

然后,覆盖适配器的 getCount() 并添加一项:

@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() 中检查当前项目的类型并填充适当的 View :

@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" 及其 subview 。

希望这对您有所帮助。

关于android - RecyclerView 滚动不流畅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39821507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com