gpt4 book ai didi

Android - 检测 RecyclerView 中的最后一个项目何时可见

转载 作者:IT老高 更新时间:2023-10-28 23:29:25 25 4
gpt4 key购买 nike

我有一个方法可以检查 RecyclerView 中的最后一个元素是否对用户完全可见,到目前为止我有这个代码问题是如何检查 RecyclerView 是否已到达底部?

PS我有元素分隔符

public void scroll_btn_visibility_controller(){
if(/**last item is visible to user*/){
//This is the Bottom of the RecyclerView
Scroll_Top_Btn.setVisibility(View.VISIBLE);
}
else(/**last item is not visible to user*/){
Scroll_Top_Btn.setVisibility(View.INVISIBLE);
}
}

更新: 这是我尝试过的尝试之一

boolean isLastVisible() {
LinearLayoutManager layoutManager = ((LinearLayoutManager)rv.getLayoutManager());
int pos = layoutManager.findLastCompletelyVisibleItemPosition();
int numItems = disp_adapter.getItemCount();
return (pos >= numItems);
}
public void scroll_btn_visibility_controller(){

if(isLastVisible()){
Scroll_Top.setVisibility(View.VISIBLE);
}
else{
Scroll_Top.setVisibility(View.INVISIBLE);
}
}

到目前为止没有成功,我认为这些行中有问题:

int pos = layoutManager.findLastCompletelyVisibleItemPosition();
int numItems = disp_adapter.getItemCount();

最佳答案

您可以在您的适配器中创建一个回调,当最后一个项目可见时,它将向您的 Activity/fragment 发送一条消息。

比如可以在onBindViewHolder方法中实现这个思路

@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
if(position==(getItemCount()-1)){
// here goes some code
// callback.sendMessage(Message);
}
//do the rest of your stuff
}

更新

好吧,我知道这已经有一段时间了,但今天我遇到了同样的问题,我想出了一个完美的解决方案。所以,如果有人需要,我就把它留在这里:

recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
LinearLayoutManager layoutManager=LinearLayoutManager.class.cast(recyclerView.getLayoutManager());
int totalItemCount = layoutManager.getItemCount();
int lastVisible = layoutManager.findLastVisibleItemPosition();

boolean endHasBeenReached = lastVisible + 5 >= totalItemCount;
if (totalItemCount > 0 && endHasBeenReached) {
//you have reached to the bottom of your recycler view
}
}
});

关于Android - 检测 RecyclerView 中的最后一个项目何时可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40726438/

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