RecyclerView:错误的滚动效果(Android)
Posted
技术标签:
【中文标题】RecyclerView:错误的滚动效果(Android)【英文标题】:RecyclerView: buggy scroll effect (Android) 【发布时间】:2021-12-29 16:56:07 【问题描述】:这是我在 *** 上的第一篇文章。我对水平的androidx.recyclerview.widget.RecyclerView
有疑问:滚动效果确实有问题。我正在使用自定义适配器,但我认为这不是问题所在。我也在使用毕加索的图像。
<androidx.recyclerview.widget.RecyclerView
android:layout_
android:layout_
android:id="@+id/test2"
android:paddingTop="10dp"
android:nestedScrollingEnabled="false"
android:clipToPadding="false"
android:clipChildren="false"
android:overScrollMode="never"
tools:ignore="MissingConstraints"/>
MainFilmsListAdapter.java(我的适配器):
public class MainFilmsListAdapter extends RecyclerView.Adapter<MainFilmsListAdapter.MyViewHolder>
private List<MainFilms> filmsList;
class MyViewHolder extends RecyclerView.ViewHolder
TextView mainFilmsTitle, mainFilmsURL;
ImageView mainFilmsImage;
MyViewHolder(View view)
super(view);
mainFilmsTitle = view.findViewById(R.id.main_films_item_title);
mainFilmsURL = view.findViewById(R.id.main_films_item_url);
mainFilmsImage = view.findViewById(R.id.main_films_item_image);
public MainFilmsListAdapter(List<MainFilms> filmsList)
this.filmsList = filmsList;
@NonNull
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.main_films_item, parent, false);
return new MyViewHolder(itemView);
@Override
public void onBindViewHolder(MyViewHolder holder, int position)
MainFilms film = filmsList.get(position);
holder.mainFilmsTitle.setText(film.getMainFilmsTitle());
holder.mainFilmsURL.setText(film.getMainFilmsURL());
Picasso.get()
.load(filmsList.get(position).getMainFilmsImage())
.fit()
.centerCrop()
.into(holder.mainFilmsImage);
@Override
public int getItemCount()
return filmsList.size();
MainFilms.java:
public class MainFilms
String mainFilmsTitle;
String mainFilmsImage;
String mainFilmsURL;
public MainFilms(String mainFilmsTitle, String mainFilmsURL, String mainFilmsImage)
this.mainFilmsTitle = mainFilmsTitle;
this.mainFilmsURL = mainFilmsURL;
this.mainFilmsImage = mainFilmsImage;
public String getMainFilmsTitle()
return mainFilmsTitle;
public String getMainFilmsURL()
return mainFilmsURL;
public String getMainFilmsImage()
return mainFilmsImage;
MainActivity.java(RecyclerView):
mAdapter = new MainFilmsListAdapter(filmsList);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext(), LinearLayoutManager.HORIZONTAL, false);
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(mAdapter);
结果: https://i.imgur.com/64CPQDY.mp4(由于文件大小,我无法上传,很抱歉质量不好,但我的电脑很慢)
我无法弄清楚问题出在哪里,我一直在寻找解决方案超过 5 个小时。我只注意到视图在到达 RecyclerView 中的某个项目时冻结。我还在我的 Android 手机上测试了该应用程序。 RecyclerView 中的item 数量是恒定的。
【问题讨论】:
我认为问题在于图像加载。试试这个 - ***.com/questions/26856487/… 谢谢,这解决了我的问题。您可以将其发布为答案吗? 【参考方案1】:看起来图片加载有问题。
您可以尝试阅读此相关问题和答案 - Recyclerview painfully slow to load cached images form Picasso
【讨论】:
以上是关于RecyclerView:错误的滚动效果(Android)的主要内容,如果未能解决你的问题,请参考以下文章
在带有 RecyclerView 的 NestedScrollView 中无法正确显示过度滚动效果
Recyclerview cardview Onclick滚动时出现重复效果