public class FeedAdapter extends RecyclerVIEw.Adapter<FeedAdapter.MyVIEwHolder> implements VIEw.OnClickListener { private LayoutInflater inflater; private Context mcontext; private int mOriginalHeight = 0; private boolean mIsVIEwExpanded = false; public FeedAdapter(Context context) { inflater = LayoutInflater.from(context); mcontext = context; } @OverrIDe public MyVIEwHolder onCreateVIEwHolder(VIEwGroup vIEwGroup,int i) { VIEw vIEw = inflater.inflate(R.layout.custom_row,vIEwGroup,false); MyVIEwHolder holder = new MyVIEwHolder(vIEw); holder.frame.setonClickListener(this); return holder; } @OverrIDe public voID onBindVIEwHolder(MyVIEwHolder myVIEwHolder,int i) { } @OverrIDe public int getItemCount() { return 100; } @OverrIDe public voID onClick(final VIEw v) { if (mOriginalHeight == 0) { mOriginalHeight = v.getHeight(); } ValueAnimator valueAnimator; if (v.getHeight() < (mOriginalHeight + (int) (mOriginalHeight * 1.5))) { valueAnimator = ValueAnimator.ofInt(mOriginalHeight,mOriginalHeight + (int) (mOriginalHeight * 1.5)); } else { valueAnimator = ValueAnimator.ofInt(mOriginalHeight + (int) (mOriginalHeight * 1.5),mOriginalHeight); } valueAnimator.setDuration(300); valueAnimator.setInterpolator(new linearInterpolator()); valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public voID onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer) animation.getAnimatedValue(); v.getLayoutParams().height = value.intValue(); v.requestLayout(); } }); valueAnimator.start(); } class MyVIEwHolder extends RecyclerVIEw.VIEwHolder { FrameLayout frame; public MyVIEwHolder(VIEw itemVIEw) { super(itemVIEw); frame = (FrameLayout) itemVIEw.findVIEwByID(R.ID.base); } }}
所以
我该如何解决这个问题,还有更好的方法来扩展和折叠项目吗?
https://developer.android.com/reference/android/support/v7/widget/RecyclerView.ViewHolder.html#isRecyclable%28%29
AndroID将回收视图,无论它是否已扩展.
所以告诉androID,如果你的视图被扩展,它是不可回收的.
在您的VIEwHolder类中添加:
public MyVIEwHolder(VIEw itemVIEw) { super(itemVIEw); frame = (FrameLayout) itemVIEw.findVIEwByID(R.ID.base); frame.setTag(this); // to get a reference to vIEwholder later on}
在您的OnClick方法中添加:
@OverrIDepublic voID onClick(final VIEw v) { MyVIEwHolder holder = (MyVIEwHolder) v.getTag(); holder.setIsRecyclable(false); if (mOriginalHeight == 0) { mOriginalHeight = v.getHeight(); } ValueAnimator valueAnimator; ...}
这应该解决你的问题.
记得在视图不再展开后再次将“setIsRecyclable()”设置为true,以便androID可以回收它.
希望我能提供帮助.
干杯
弗洛雷斯坦
总结以上是内存溢出为你收集整理的android – 扩展recyclerview项目全部内容,希望文章能够帮你解决android – 扩展recyclerview项目所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)