這是我在 StackOverflow 上的第一篇文章。我有一個水平問題androidx.recyclerview.widget.RecyclerView:滾動效果真的有問題。我正在使用自定義配接器,但我認為這不是問題。我也在使用畢加索的影像。
- 回收器視圖:
<androidx.recyclerview.widget.RecyclerView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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 中的專案數量是恒定的。
uj5u.com熱心網友回復:
貌似圖片加載有問題。
您可以嘗試閱讀此相關問題和答案 - Recyclerview 從 Picasso 加載快取影像的速度非常緩慢
uj5u.com熱心網友回復:
對我來說,這看起來配接器沒有正確計算 recyclerview 專案大小。您可以發布您的配接器嗎?你是快取影像還是在滾動時加載它們?
*Sry for answer,但我沒有足夠的聲譽發表評論
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/360312.html
標籤:安卓 安卓工作室 android-recyclerview 安卓x
