我正在使用嵌套的RecycerView。意思是在一个垂直的回收器视图中,我有多个水平的回收器视图
@Override
public void onBindViewHolder(final MainViewHolder holder, final int position) {
switch (holder.getItemViewType()) {
case TYPE_PRODUCT:
((ListHolderProduct) holder).itemTitle.setText(browseCategoryHomePageItems.get(position).displayName.toUpperCase());
((ListHolderProduct) holder).recyclerView.setAdapter(new CarouselProductsRecyclerAdapter(context
, browseCategoryHomePageItems.get(position).products
, R.layout.activity_categoryhome_products_grid_item
, nestedRecyclerItemClickedListener
, position));
break;
case TYPE_DEAL:
((ListHolderDeal) holder).itemTitle.setText(browseCategoryHomePageItems.get(position).displayName.toUpperCase());
((ListHolderDeal) holder).recyclerView.setAdapter(new CarouselDealsRecyclerAdapter(context
, browseCategoryHomePageItems.get(position).dealItems
, R.layout.activity_categoryhome_deals_grid_item
, nestedRecyclerItemClickedListener
, position));
break;
//few more types like this
}
}
layoutManager.setExtraLayoutSpace(2 * this.getResources().getDisplayMetrics().heightPixels);
public class PreCachingLayoutManager extends LinearLayoutManager {
private static final int DEFAULT_EXTRA_LAYOUT_SPACE = 600;
private int extraLayoutSpace = -1;
private Context context;
public PreCachingLayoutManager(Context context) {
super(context);
this.context = context;
}
public PreCachingLayoutManager(Context context, int extraLayoutSpace) {
super(context);
this.context = context;
this.extraLayoutSpace = extraLayoutSpace;
}
public PreCachingLayoutManager(Context context, int orientation, boolean reverseLayout) {
super(context, orientation, reverseLayout);
this.context = context;
}
public void setExtraLayoutSpace(int extraLayoutSpace) {
this.extraLayoutSpace = extraLayoutSpace;
}
@Override
protected int getExtraLayoutSpace(RecyclerView.State state) {
if (extraLayoutSpace > 0) {
return extraLayoutSpace;
}
return DEFAULT_EXTRA_LAYOUT_SPACE;
}
}
不要每次都在onBindViewholder
中创建水平的适配器
,而是在每个Viewholder
类(ListHolderDeal,ListHolderProduct)中创建适当的适配器。然后,在垂直RecycerView
的onbindViewholder
中,只需替换该适配器的数据,如果水平RecycerView
没有适配器,则用viewholder适配器设置该数据。如果是,则替换该适配器的数据集
并调用NotifyDataSetChange
。通过这种方法,您可以隐式地使用适配器池,这样GC就可以减少您的麻烦。
希望能有所帮助。
我刚刚实现了库图表(https://github.com/danielgindi/Charts)在tableview中,当我的图表包含大量数据时,我在滚动过程中遇到了很大的延迟。 我在ChartTableViewCell中有一个方法,我在其中根据从我的视图控制器传递和调用的数据绘制图表。 在我的tableViewController中,我在解析数据后调用函数: 我错过了什么?因为滚动时视图滞后得很
我在线性布局中使用滚动视图,问题是布局响应正常,一旦我开始滚动,它就会滞后太多。 我在我的线性布局中使用了这段代码,一旦我触摸了RadiButton或edittext或我向下滚动,它就开始滞后很多。我无法理解这个问题,我使用的图像尺寸小于100kb
问题内容: 我box-shadow最近在页面的一部分中添加了,以为其提供与Mac OS X应用程序相同的阴影边框效果。看起来不错,但我注意到在页面上上下滚动会使其滞后。我通常只会在页面上贴满恼人的背景图像,大量图像和嵌入视频(咳嗽MySpace咳嗽)的页面上看到此图像。我最初决定使用box-shadow,因为我发现它可以消除使用图像的需要,从而消除滚动滞后的可能性。 我知道CSS3仍然是新的,但这
我使用嵌套的Scrollview来包装recyclerview和其他按钮。它工作得很好,但我注意到当我滚动它时,它并不平滑。请指导如何使滚动平滑。
我在嵌套滚动视图中有一个回收器视图。当回收器视图中有太多数据时,滚动会滞后。除了将回收器视图从嵌套滚动视图中删除之外,还有什么方法可以解决这个问题吗?
我将静态表视图嵌入到容器视图中,问题是当应用程序在父视图控制器中启动时,表视图向下滚动,中继最后一项。我希望看到前3项。 以下是我在父视图控制器和子视图控制器中所做的尝试,但没有成功: 以下是我的问题的图像: