【发布时间】:2017-04-23 17:54:49
【问题描述】:
我有一个无穷无尽的 Recycler View,其中包含使用 JSoup 提取的在线论坛线程中的数据。 recyclerview 将不断填充自己,直到用户到达最后一页。一旦用户到达最后一页并滚动到最后一个可见项目,我想膨胀一个“结束视图”,但我无法检索它。
我尝试使用 recyclerview linearlayoutmanager 中的 getItemCount() 和 findLastVisibleItemPosition()。它设法获得正确的大小,但每次加载下一页时,“结束视图”都会在底部膨胀。当用户到达最后一页的最后一项时,它不会膨胀。
RecyclerAdapter.java
public RecyclerAdapter(Context context, final ArrayList<ReplyItem> recyclerReplyList, RecyclerView recyclerView) {
this.recyclerReplyList= recyclerReplyList;
this.context = context;
if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView
.getLayoutManager();
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView,
int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
totalItemCount = linearLayoutManager.getItemCount();
lastVisibleItem = linearLayoutManager.findLastVisibleItemPosition();
firstVisibleItem = linearLayoutManager.findFirstVisibleItemPosition();
verylastVisibleItem = linearLayoutManager.findLastCompletelyVisibleItemPosition();
if (!loading && totalItemCount <= (lastVisibleItem + visibleThreshold)) {
if (onLoadMoreListener != null) {
onLoadMoreListener.onLoadMore();
}
loading = true;
}
}
});
}
}
@Override
public int getItemViewType(int position) {
if(recyclerReplyList.get(position) != null){
return VIEW_POST;
}
else if(position == totalItemCount){
return VIEW_END_ITEM;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,
int viewType) {
RecyclerView.ViewHolder vh;
if (viewType == VIEW_POST) {
View v = LayoutInflater.from(parent.getContext()).inflate(
R.layout.replies_row, parent, false);
vh = new PostViewHolder(v);
}
else if (viewType == VIEW_END_ITEM) {
View v = LayoutInflater.from(parent.getContext()).inflate(
R.layout.end_item, parent, false);
vh = new EndViewHolder(v);
}
return vh;
}
【问题讨论】:
-
你试过我的答案了吗?
-
@KishoreJethava 刚试过。有用!但它也会在用户每次到达前一页的底部时触发,在下一页加载之前。我必须在它上面加上另一个条件。谢谢!
-
查看更新的答案。您也可以将答案标记为正确的!
标签: android android-recyclerview