Android Recyclerview 停止加载已经加载的项目
Android Recyclerview stop loading items which already loaded
在我的 RecyclcerView
中,当我向下滚动并再次向上滚动时,我想停止绑定顶部项目。
我试过这个代码
recyclerView.getRecycledViewPool().setMaxRecycledViews(ItemTypeHead1, 0);
但位置 0 再次重新绑定。
我想这样做的原因是每个项目的渲染都非常重,这会导致滚动延迟。
这是我的适配器
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()));
}
你不能告诉回收商停止装载来自顶部的新物品。
在任何情况下,回收站视图都会调用 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
来获取
来源:
在我的 RecyclcerView
中,当我向下滚动并再次向上滚动时,我想停止绑定顶部项目。
我试过这个代码
recyclerView.getRecycledViewPool().setMaxRecycledViews(ItemTypeHead1, 0);
但位置 0 再次重新绑定。 我想这样做的原因是每个项目的渲染都非常重,这会导致滚动延迟。 这是我的适配器
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()));
}
你不能告诉回收商停止装载来自顶部的新物品。
在任何情况下,回收站视图都会调用 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
来源: