在我的应用程序中,我有一个包含20 - 30个项目的回收器视图,我有拉动来刷新内容的功能,我想防止用户在刷新过程中滚动视图,因为如果用户绑定到滚动,并且正在进行regresh,就会产生错误,但我真的不知道该怎么做:/
eRecyclerView = findViewById(R.id.recycler_view);
RecyclerView.LayoutManager eLayoutManager = new GridLayoutManager(this, 2);
eRecyclerView.setLayoutManager(eLayoutManager);
swipeRefreshLayout = findViewById(R.id.refreshSecondLevel);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
loadNewContent();
Handler delay = new Handler();
delay.postDelayed(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(false);
}
}, 3000);
}
});
发布于 2019-05-29 06:32:40
您应该在RecyclerView.LayoutManager
上重写canScrollVertically
方法
public class ToggledScrollLayoutManager extends LinearLayoutManager {
private boolean mIsScrollEnabled = true;
public ToggledScrollLayoutManager(Context context) {
super(context);
}
public void setScrollEnabled(boolean enabled) {
this.mIsScrollEnabled = enabled;
}
@Override
public boolean canScrollVertically() {
return mIsScrollEnabled && super.canScrollVertically();
}
}
然后在用户刷新页面时使用它:
recyclerView = findViewById(R.id.recyclerView);
ToggledScrollLayoutManager layoutManager = new ToggledScrollLayoutManager();
recyclerView.setLayoutManager(layoutManager);
swipeRefreshLayout = findViewById(R.id.refreshSecondLevel);
swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
loadNewContent();
layoutManager.setScrollEnabled(false);
Handler delay = new Handler();
delay.postDelayed(new Runnable() {
@Override
public void run() {
swipeRefreshLayout.setRefreshing(false);
layoutManager.setScrollEnabled(true);
}
}, 3000);
}
}
});
https://stackoverflow.com/questions/56349983
复制相似问题