gpt4 book ai didi

Android Recyclerview 停止加载已经加载的项目

转载 作者:行者123 更新时间:2023-11-29 18:31:31 26 4
gpt4 key购买 nike

在我的 RecyccerView 中,当我向下滚动并再次向上滚动时,我想停止绑定(bind)顶部项目。

我试过这段代码

recyclerView.getRecycledViewPool().setMaxRecycledViews(ItemTypeHead1, 0);

但位置 0 再次重新绑定(bind)。我想这样做的原因是每个项目的渲染都非常重,这会导致滚动延迟。 这是我的适配器

public class HomeSliderListAdapter extends AdvanceRecycleViewAdapter<HomeSliderListAdapter.Holder, Banner> implements OnRecycleItemClick<Banner> {

public interface CallBack {
void onClick(Banner Banner);
}

private Context context;
private CallBack callBack;

public HomeSliderListAdapter(Context context, CallBack callBack) {
this.context = context;
this.callBack = callBack;
}

@Override
public Holder createDataHolder(ViewGroup parent, int viewType) {
return new Holder(makeView(parent, R.layout.row_home_one_banner));
}

@Override
public void onBindDataHolder(Holder holder, int position) {
Banner banner = getItems().get(position);

EpizodUtil.getPicasso(context)
.load(EpizodUtil.getConvertedImagePath(banner.getImagePath() + "", Common.ImageSize.s10))
.networkPolicy(NetworkPolicy.NO_CACHE)
.into(holder.img_background);

holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (callBack != null) {
callBack.onClick(banner);
}
}
});

holder.txt_title.setText(EpizodUtil.checkNullString(banner.getTitleFa()));
holder.txt_subtitle.setText(EpizodUtil.checkNullString(banner.getSubtitleFa()));
}

最佳答案

你不能告诉回收商停止加载来自顶部的新元素。

在任何情况下,recycler View 都会调用 onBindViewHolder,您必须在这个函数中设置您的项目。

您可以做的是检测当前加载的项目(由 onBindViewHolder 指定)是来自底部还是来自顶部。

这里是我的意思的一个想法:

public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.ViewHolder>
{
private int mLowestPosition = -1;

...

public CustomAdapter(...)
{
...
}

@Override
public CustomAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
{
...
}


@Override
public void onBindViewHolder(ViewHolder iHolder, int iPosition)
{

if (iPosition > mLowestPosition)
{
// All item coming from the bottom for their first time will pass here.
// Bind your view here

mLowestPosition = iPosition;
}
}

}

如果你想重用向上滚动时从底部消失的数据,你可以通过重写onViewRecycled

来源:

https://stackoverflow.com/a/26748274/5384689

RecyclerView.Adapter.onViewRecycled()

关于Android Recyclerview 停止加载已经加载的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56017925/

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