您好,我试图在 recylerview 中包含分页,我想要的是在片段开始时加载 10 个图像,当可见项目达到 5 个项目计数(适配器中仍有 5 个项目)时,下一个 5 将加载到适配器中,动机这样做是我不想显示进度条
当可见项目数达到 5 时,适配器中总共加载了 10 个图像,接下来 5 个将加载到适配器中,因此适配器将维护 10 个项目并重复循环
注意:- 我一次实现了一个项目滚动,这意味着一次只能滚动一个图像
我现在力图实施任何分页方法
Home_Fragment.java
public List<Upload> mUploads;
PostAdapter_Home postsAdapter;
RecyclerView verticalRecyclerView;
ShimmerFrameLayout shimmerFrameLayout;
@SuppressLint("SourceLockedOrientationActivity")
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_home, container, false);
requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
MaterialToolbar materialToolbar = view.findViewById(R.id.toolbar);
materialToolbar.setOnMenuItemClickListener(toolbarItemClickListener);
verticalRecyclerView = view.findViewById(R.id.recyclerViewHome);
shimmerFrameLayout = view.findViewById(R.id.shimmerEffect);
// this is for one item per scroll
SnapHelper snapHelper = new PagerSnapHelper();
snapHelper.attachToRecyclerView(verticalRecyclerView);
verticalRecyclerView.setLayoutManager(
new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL)
);
getData();
shimmerFrameLayout.startShimmer();
mUploads = new ArrayList<>();
postsAdapter = new PostAdapter_Home(getContext(), mUploads);
verticalRecyclerView.setAdapter(postsAdapter);
verticalRecyclerView.scrollToPosition(Home_Fragment.saved_position);
return view;
}
private void getData() {
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()) {
shimmerFrameLayout.stopShimmer();
shimmerFrameLayout.setVisibility(View.GONE);
verticalRecyclerView.setVisibility(View.VISIBLE);
mUploads.clear();
for (DataSnapshot dataSnapshot : snapshot.getChildren()) {
Upload upload = dataSnapshot.getValue(Upload.class);
assert upload != null;
upload.setmKey(dataSnapshot.getKey());
mUploads.add(upload);
}
}
//notify the adapter
postsAdapter.notifyDataSetChanged();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
}