我有一个recyclerview
不同的类别。每个类别都有自己的产品。但是,为了获得产品,我们必须针对类别调用API,并将这些产品作为水平recyclerview
加载到类别项中。一切都很好。
仅当用户滚动到该特定类别时,才应调用产品API。当用户滚动到特定类别时,我需要调用产品列表API并在类别项中显示。
我的问题是我无法在recyclerview
中识别当前可见的项目,并且在滚动时找不到可见的项目。
答案 0 :(得分:0)
尝试一下:
@BindView(R.id.general_layout)
RecyclerView recyclerView;
最后滚动:
recyclerView.smoothScrollToPosition(recyclerView.getAdapter().getItemCount());
在适配器类中:
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
ViewHolder(View itemView) {
super(itemView);
itemView.setOnClickListener(this);
}
@Override
public void onClick(View view) {
if (mClickListener != null) mClickListener.onItemClick(view, getAdapterPosition());
}
}
// convenience method for getting data at click position
private YourItemType getItem(int id) {
return mData.get(id);
}
// allows clicks events to be caught
public void setClickListener(ItemClickListener itemClickListener) {
this.mClickListener = itemClickListener;
}
// parent activity will implement this method to respond to click events
public interface ItemClickListener {
void onItemClick(View view, int position);
}
答案 1 :(得分:0)
添加一个onScrolledListener并从布局管理器中获取最后一个可见项。 一旦最后一个可见项到达小部件的索引,请进行API调用。
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
int lastVisibleItemIndex = recyclerView.getLayoutManager().findLastVisibleItemPosition();
//When the position reaches the element or the one
}
});