gpt4 book ai didi

android - Recyclerview 在滚动完成之前不能顺利滚动

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:07:33 24 4
gpt4 key购买 nike

我在滚动时遇到问题我的意思是滚动速度很快但它看起来像是在滚动完成之前滞后我在这里定义 RecyclerView :

RecyclerView recyclerView=fragment.getRecyclerView();
LinearLayoutManager layoutManager = new LinearLayoutManager(fragment.getActivity(), LinearLayoutManager.VERTICAL, false);
recyclerView.setLayoutManager(layoutManager);
recyclerView.addItemDecoration(new DividerItemDecoration(fragment.getActivity(), LinearLayoutManager.VERTICAL));
ArrayList<InstaPostModel> rowListItems=getInstaPostListSample();
InstaPostAdapter rcAdapter = new InstaPostAdapter(rowListItems);
recyclerView.setAdapter(rcAdapter);

这里是BindViewHolder

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final InstaPostModel p = items.get(position);
context = holder.itemView.getContext();
Glide.with(context).load(R.mipmap.mee_small).into(holder.userPhoto);
Glide.with(context).load(R.drawable.post_image).into(holder.photo_content);
Glide.with(context).load(R.mipmap.love_gray_icon).into(holder.bt_like);
Glide.with(context).load(R.mipmap.comment_icon).into(holder.bt_comment);
Glide.with(context).load(R.mipmap.share_icon).into(holder.bt_share);

holder.userNameTextView.setText(p.getPosterUserName());
holder.postContent.setText(p.getText());
holder.post_date.setReferenceTime(p.getDate().getTime());
}

这里是 RecyclerView.xml

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/qatar_now_posts_recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
tools:context=".uis.fragments.home.QatarNowFragment"
/>

编辑我也在同一个 fragment 中有底部导航栏,它在滚动时显示

编辑2这里是视频link显示滞后
我尝试了所有解决方案,但没有人帮助我。我已经添加了我所有的代码请帮忙?

最佳答案

我没有发现您的代码有任何问题。还有以下几点需要考虑。

(1) 如果您从 API 获取的图像尺寸太大,可能会发生什么情况。检查 API 的大小并使其最多减少 200 kb。 (100-150 kb 也足够了)。

(2) 您不应禁用缓存,因为它会通过将图像存储在缓存中并在下次通过缓存而不是通过 URL 加载来改善用户体验。

(3) 您不需要使用 material-ripple 库来获得现在在 Android 中可用的简单涟漪效果。将此属性添加到您的 ImageView

 android:background="?attr/selectableItemBackground"

(4) 检查一次加载了多少个项目。你不应该一次加载很多项目。参见 Architecture component paging library

(5) 同时检查资源的大小,例如 love_gray_icon。我认为它应该最大 70*70。如果你有更大的,你应该调整它的大小。 Resize multiple images at once .还要在使用前压缩图像,这会将图像大小减小多达 80%。调整大小后,compress images .

(6) Glide 是一个维护良好的库,所以 onViewRecycled 是多余的。

最后一点修改你的代码。

  private void loadImage(ImageView iv, String url) {
Glide.with(iv.getContext()).load(url).thumbnail(0.5f).into(iv);
}

private void loadImage(ImageView iv, int resId) {
Glide.with(iv.getContext()).load(resId).thumbnail(0.5f).into(iv);
}

// Replace the contents of a view (invoked by the layout manager)
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
final InstaPostModel p = items.get(position);

loadImage(holder.userPhoto, Urls.BASE_URI + p.getUserPhotoUrl());
loadImage(holder.photo_content, Urls.BASE_URI + p.getPostPhotoUrl());
loadImage(holder.bt_like, R.mipmap.love_gray_icon);
loadImage(holder.bt_comment, R.mipmap.comment_icon);
loadImage(holder.bt_share, R.mipmap.share_icon);

holder.userNameTextView.setText(p.getPosterUserName());
holder.postContent.setText(p.getText());
holder.post_date.setReferenceTime(p.getDate().getTime());
}

关于android - Recyclerview 在滚动完成之前不能顺利滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51223699/

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