正如您在演示中可以看到的图像在2k屏幕上模糊,但如果我加载更高分辨率的图像,情况变得更糟.
如何解决这个问题,我甚至没有加载大图像,它的400×200?
Demo
这是我的代码
Card_vIEw.xml
<?xml version="1.0" enCoding="utf-8"?><androID.support.v7.Widget.CardVIEw xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:card_vIEw="http://schemas.androID.com/apk/res-auto" androID:ID="@+ID/card_vIEw" card_vIEw:cardPreventCornerOverlap="false" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:layout_margin="8dp" card_vIEw:cardCornerRadius="2dp" > <linearLayout androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:orIEntation="vertical" androID:ID="@+ID/rel" > <ImageVIEw androID:ID="@+ID/cardimage" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" androID:scaleType="fitXY" androID:src="@drawable/p7" /> <TextVIEw androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:text="Title" androID:paddingleft="16dp" androID:paddingRight="16dp" androID:paddingtop="16dp" androID:paddingBottom="24dp" androID:textStyle="bold" androID:textSize="24sp" androID:ID="@+ID/cardTitle" androID:layout_gravity="center_vertical" /> </linearLayout></androID.support.v7.Widget.CardVIEw>
Myadapter代码
public class CardAdapter extends RecyclerVIEw.Adapter<CardAdapter.VIEwHolder> {private Context mContext;List<Flower> List = new ArrayList<>();public CardAdapter(Context mContext,List<Flower> List) { this.mContext = mContext; this.List = List;}@OverrIDepublic VIEwHolder onCreateVIEwHolder(VIEwGroup parent,int vIEwType) { VIEw itemVIEw = LayoutInflater.from(parent.getContext()) .inflate(R.layout.card_vIEw,parent,false); return new VIEwHolder(itemVIEw);}@OverrIDepublic voID onBindVIEwHolder(VIEwHolder holder,int position) { holder.Flower=getItem(position); holder.cardTitle.setText(List.get(position).name); Picasso.with(mContext) .load(List.get(position).ID) .placeholder(R.drawable.ic_launcher) .into(holder.cardimage);}@OverrIDepublic voID onAttachedToRecyclerVIEw(RecyclerVIEw recyclerVIEw) { super.onAttachedToRecyclerVIEw(recyclerVIEw);}@OverrIDepublic int getItemCount() { return List.size();}public Flower getItem(int i) { return List.get(i);}public class VIEwHolder extends RecyclerVIEw.VIEwHolder { ImageVIEw cardimage; TextVIEw cardTitle; Flower Flower; public VIEwHolder(VIEw itemVIEw) { super(itemVIEw); cardimage = (ImageVIEw) itemVIEw.findVIEwByID(R.ID.cardimage); cardTitle = (TextVIEw) itemVIEw.findVIEwByID(R.ID.cardTitle); }}}
更新:我从资源加载图像,我没有下载什么
这是我的阵列
private voID initializeData() { flowers = new ArrayList<>(); flowers.add(new Flower("Flower 1",R.drawable.p8)); flowers.add(new Flower("Flower 2",R.drawable.p10)); flowers.add(new Flower("Flower 3",R.drawable.p11)); flowers.add(new Flower("Flower 4",R.drawable.p8)); flowers.add(new Flower("Flower 5",R.drawable.photo2)); flowers.add(new Flower("Flower 6",R.drawable.photo6)); flowers.add(new Flower("Flower 7",R.drawable.p12)); flowers.add(new Flower("Flower 8",R.drawable.p9)); flowers.add(new Flower("Flower 9",R.drawable.p8)); flowers.add(new Flower("Flower 10",R.drawable.p8)); flowers.add(new Flower("Flower 11",R.drawable.p8)); flowers.add(new Flower("Flower 12",R.drawable.p10));}
更新2:我们通过设置adapter.setHasStableIDs(true)来修复大部分的滞后,但是应用程序在第一个滚动条件下仍然滞后,而图像尚未加载,如何解决?
更新3:我刚刚尝试从Web加载图像,一切似乎顺利,可能是从资源加载图像有一些问题.
好的,谢谢你们,我将从网页加载我的图片.
解决方法 RecyclerVIEw.setHasFixedSize()设置为true?我不能再现这个滞后…你可以把整个项目发贴到git吗?检查一下,也许它可以帮助你: http://antonioleiva.com/recyclerview/ 总结以上是内存溢出为你收集整理的android – RecyclerView滞后滚动全部内容,希望文章能够帮你解决android – RecyclerView滞后滚动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)